mai 06
Se balader efficacement dans les répertoires avec Bash
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 ».

Le 6 mai 2008 à 19:07
Si vous avez d'autres astuces à partager, n'hésitez pas
sylvain@gnu...ad.org