mai 06

Se balader efficacement dans les répertoires avec Bash

Tag: Debian GNU/Linux, SystèmeSylvain @ 17:55

Se balader dans les répertoires à partir d'un shell peut vite devenir fastidieux si l'on ne connaît pas quelques raccourcis, en voici quelques-uns qui vous ferons gagner du temps.

Tout d'abord, commençons par un petit rappel pour les plus néophytes d'entre nous : le changement de répertoire. Nous avons ici, respectivement, l'entrée dans le répertoire « test » puis le retour au répertoire parent grâce aux « .. » :

user@gnusquad:~$ cd test
user@gnusquad:~/test: cd ..
user@gnusquad:~$

La base étant rappelée, passons aux astuces plus intéressantes.
Le retour au répertoire utilisateur peut se faire de maintes façons, je vous laisse choisir la plus rapide ;-) :

user@gnusquad:~/test$ cd
user@gnusquad:~$
user@gnusquad:~/test$ cd ~
user@gnusquad:~$
user@gnusquad:~/test$ cd $HOME
user@gnusquad:~$

Comme vous venez de le voir, « ~ » correspond au répertoire personnel de l'utilisateur en cours (en anglais : sa « homedir») ; par extension nous pouvons suffixer ce « ~ » par le login de n'importe quel utilisateur pour atterrir directement dans son répertoire personnel (pour information : cette donnée se trouve, par défaut, dans le 6ème champ du fichier « /etc/passwd ») :

user@gnusquad:~$ cd ~www-data
user@gnusquad:/var/www$
user@gnusquad:~$ cd ~www-data/blog
user@gnusquad:/var/www/blog$

Imaginons maintenant que nous souhaitions revenir dans le répertoire précédent, deux possibilités s'offrent à nous : une, extrêmement simple et rapide et une autre, plus longue, qui à vrai dire, n'est là que pour vous signaler l'existence de la variable « OLDPWD » qui peut être utile lors de l'écriture d'un script :

user@gnusquad:~$ cd /var/www
user@gnusquad:/var/www$ cd -
user@gnusquad:~$
user@gnusquad:~$ cd /var/www
user@gnusquad:/var/www$ cd $OLDPWD
user@gnusquad:~$

Lorsque vous jonglez avec différents répertoires, il peut être pratique de les assigner à des variables pour ne pas devoir les taper systématiquement. Notez que vous pouvez très bien les utiliser en tant qu'arguments (exemple sur le billet « Modifier le contenu d’une révision dans un référentiel Subversion ») :

user@gnusquad:~$ WWW=/var/www
user@gnusquad:~$ SVN=/var/local/lib/svn/blog
user@gnusquad:~$ cd $WWW
user@gnusquad:/var/www$ cd $SVN
user@gnusquad:/var/local/lib/svn/blog$

Pour récupérer le chemin du répertoire courant dans une variable, on utilisera la commande « pwd » dans un sous-shell « $(xxx) ou `xxx` » :

user@gnusquad:/var/local/lib/svn/blog$ BLOG=$(pwd)
user@gnusquad:/var/local/lib/svn/blog$ BLOG=`pwd`

Une dernière astuce pour clôturer ce billet est l'utilisation d'un nouveau shell ce qui permet d'effectuer tout un tas d'opérations puis de retourner instantanément dans le répertoire précédent en appuyant simplement sur CTRL+D (commande « logout ») :

user@gnusquad:~$ bash
user@gnusquad:~$ cd /var/log/
user@gnusquad:/var/log$ ...
user@gnusquad:/var/log$ ^D (CTRL+D)
user@gnusquad:~$

À titre d'information, il existe 3 commandes dédiées aux répertoires que je n'ai pas présenté parce qu'à mon sens, pas très pratiques. Je vous laisse consulter le manuel de « Bash » pour avoir l'aide des fonctions suivantes : « pushd », « popd » et « dirs ».

Une réponse pour “Se balader efficacement dans les répertoires avec Bash”

  1. Sylvain a dit :

    Si vous avez d'autres astuces à partager, n'hésitez pas ;-)
    sylvain@gnu...ad.org

Laissez un commentaire