Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/03/2011, à 00:57

Scott Cha'k

Combiner cd et ls

Bonsoir ^^
Je suis dans mes tous débuts avec linux (à savoir Ubuntu 10.04 LTS) et j'adapte peu à peu mes commandes à mes besoins courants. Celui sur lequel je bute étant celui-ci.

"cd" est une commande très souvent utilisée, mais quasiment systématiquement suivi de "ls" (c'est bien de bouger dans les répertoires, mais faut savoir ou on arrive aussi. Mon premier réflexe était " man cd " ou " cd --help " pour voir si y'avait par hasard une option déjà existante, mais apparament il n'existe pas de manuel pour cd ou d'option help.

Deuxième essaie, modifier mon .bashrc pour y inclure, en y ajoutant l'alias:
" alias cd='cd $1;ls' "
(en prenant le soin de redémarrer ma console après pour prendre en compte la modification). Ce code affiche bien le contenu du répertoire indiqué, mais je reste dans le même répertoire. Donc je modifie encore une fois mon .bashrc:
" alias cd='cd $1;ls;cd $1' "
mais toujours pas de chance, le premier cd ne marche pas (je sais pas pourquoi), le ls m'affiche le contenu du repertoire ou je suis déjà, puis me déplace dans le répertoire demandé.

Troisième essaie, écrire un script. Je modifie ma variable $PATH pour inclure mon répertoire de script personel, puis j'y place le script suivant:

#!/bin/bash
directory=`echo $1 | sed 's/ /\\\ /'` #juste pour régler le problème des noms de répertoire contenant des espaces
cd "$directory"
ls

mais je retrouve le même problème, il liste les fichiers du répertoire demandé, mais ne bouge pas dans ce répertoire.

Quelqu'un peut-il:
1) me proposer une solution ?
2) m'expliquer pourquoi mes codes ne marchent pas ? roll

Hors ligne

#2 Le 07/03/2011, à 01:24

Haleth

Re : Combiner cd et ls

#!/bin/bash
cd $1
ls $1

Pragmatique.


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 07/03/2011, à 01:57

Scott Cha'k

Re : Combiner cd et ls

C'est toujours le même souci, j'obtiens bien la liste des éléments contenu dans le répertoire désigné par variable $1, par contre la console ne me place pas à l'intérieur de ce dossier (en gros, ça revient c'est le même résultat que " ls $1 " tout seul).

Hors ligne

#4 Le 07/03/2011, à 03:45

FRUiT

Re : Combiner cd et ls

Dans ~/.bashrc

function cd () { builtin cd "$*" && ls ; }

Il faut fermer/rouvrir la console ou sourcer ensuite le fichier.

$ source ~/.bashrc

Tes codes ne marchent pas parce que :

1) il aurait fallu protéger le $ et utiliser des double-quotes (les simples ne développent pas les paramètres positionels ($1, $2, etc) :

alias cd2="cd \$1 && ls"

mais ça ne règle pas le problème du changement effectif de dossier.

2) la commande cd n'affecte pas le shell courant si invoquée dans un script (shell 'fils'). En revanche tant que tu es dans ton script, cd fonctionne, bien qu'il n'y serve à rien en réalité.

Dernière modification par FRUiT (Le 07/03/2011, à 05:40)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#5 Le 07/03/2011, à 08:25

Scott Cha'k

Re : Combiner cd et ls

Merci beaucoup pour cette solution et les explications. J'avais remarqué (avec des pwd) que le répertoire d'exécution du script changeait avant et après le cd, sans que la console s'y déplace ...

Pour finir, quelqu'un connais un bon tuto pour le bash sur internet (ou éventuellement un livre)? Le site du zéro en propose un, mais il est pas très élaboré, et ceux que je trouve dans les moteurs de recherche ne le sont pas tellement non plus.

Hors ligne

#6 Le 07/03/2011, à 08:31

01franz

Re : Combiner cd et ls


toujours utile
sudo tail -f /var/log/syslog

Hors ligne

#7 Le 07/03/2011, à 20:07

Scott Cha'k

Re : Combiner cd et ls

Parfait, là y'a de quoi lire ^^

Hors ligne

#8 Le 22/04/2011, à 23:03

Hornblende

Re : Combiner cd et ls

Au cas où quelqu'un cherche comment faire, je laisse la commande à rajouter dans le ~/.bashrc pour combiner cd et ls et revenir au /home si on fait un "cd" sans chemin derrière (le comportement par défaut de cd).

#----------------------------------------------
#Modifie la commande cd pour afficher les éléments du dossier
function cd () { 
if [ -z "$1" ] 
then
builtin cd
else
builtin cd "$*" && ls -lh ; 
fi 
} 
#----------------------------------------------

Vous êtes débutant / nouveau sous Ubuntu et Gnu/Linux ? Pas de panique !
=> commencez par là

Hors ligne

#9 Le 27/03/2018, à 11:12

moinux

Re : Combiner cd et ls

Bonjour, des années plus tard j'ai eu le même problème, et aucune des solutions proposées n'ont fonctionné pour moi... J'ai donc essayé de les combiner et le résultat que j'ai obtenu fonctionne très bien :

- création d'un script ~/bin/cs (contraction de cd et ls), contenant les instructions suivantes :
#! /bin/bash
#cs

if [[ $1 = "" ]] ; then
    cd ~ ; ls --color #ls colorisé pour un peu mieux voir
elif [[ -d $1 ]] ; then
    cd $1 ; ls --color 
else
    echo "cs: $1: Not a directory"
fi


- dans ~/.bashrc, ajout en bas de page d'un alias :
alias cs="source ~/bin/cs"


- dans le terminal, entrer la commande :
source ~/.bashrc


- éventuellement, changer les droits du script avec la commande :
chmod 764 ~/bin.cs

Hors ligne

#10 Le 27/03/2018, à 15:50

Compte anonymisé

Re : Combiner cd et ls

enfaite, il n'est pas utile de changer de répertoire (je conseilles même d'éviter de le faire dans un script)

ls permet de définir le répertoire, donc

au lieu de faire :

 cd ... ; ls

on peut faire :

ls ...

Dernière modification par Compte anonymisé (Le 27/03/2018, à 22:51)

#11 Le 27/03/2018, à 17:41

serged

Re : Combiner cd et ls

Et tout bêtement :

ls directory

(sans script, sans alias...) Ça marche !

Exemple :

serge@slibovix:~/Documents$ ls Doc\ Linux/
abs-guide_6.6.pdf            OOo_API_intro.pdf
Bash avancé-abs-5.3.pdf      petit_precis_des_commandes_unix_utiles_a_ubuntu.pdf
Chap-1_Marcelly.pdf          Pour_aller_plus_loin_avec_la_ligne_de_commande.pdf
Full-Circle-LibreOffice.pdf  Simple Comme Ubuntu 9.04.pdf
Gimp-cours-r3_2012.pdf       Tutoriel_Gimp_coloriser-Feramus-cc-by-sa.pdf
IntroProgBash.pdf            ubuntu_fr_carte_reference3.pdf
iscan-doc.pdf                ubuntupocketguide-v1-1.pdf
memo_admin_linux.pdf
serge@slibovix:~/Documents$ 

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#12 Le 27/03/2018, à 17:44

serged

Re : Combiner cd et ls

Anonyme68 a écrit :

e
au lieu de faire :

 cd ... ; ls

on peut faire :

ls ...

ts... ts... le répertoire "..." ça ne marche pas wink (du moins en bash)


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#13 Le 27/03/2018, à 18:10

erresse

Re : Combiner cd et ls

Sans vouloir vexer personne, je trouve que ce qui est le plus inutile ici, c'est la totalité de la démarche. Quel intérêt de combiner les deux commandes "cd" et "ls" ? Aucun !
Rien n'empêche de saisir "cd [répertoire]; ls", ou "cd [répertoire] && ls" (si on veut être sûr du déplacement), ce qui coûte quoi... 2 caractères de plus à taper ?!?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#14 Le 27/03/2018, à 18:21

Roschan

Re : Combiner cd et ls

2 caractères de trop. Je comprends totalement la démarche.

Hors ligne