DirB : Des marque-pages dans le shell BASH

DirB (prononcez « derby » d’après son auteur Ira Chayut) est une librairie (bibliothèque) de fonctions BASH destinée à créer des « accès rapides »/ »raccourcis » aux répertoires du système sur le mode des marque-pages des navigateurs internet. Le principe revient à créer des alias de chemins de répertoires.

Installation

Téléchargez le fichier source de DirB depuis le site du projet : http://www.dirb.info/ et placez le à la racine de votre répertoire personnel sous le nom qui vous plaira :

fhh@mafalda ~ $ pwd
/home/fhh
fhh@mafalda ~ $ wget -q http://www.verilog.net/dirb.info/bashDirB+ -O .bashDirB

Note : Le fichier source proposé sur le site de DirB est affiché dans une frame, si vous faites un wget sur « http://www.dirb.info/bashDirB » directement, vous téléchargerez juste la page html… Pour le fichier lui même, tous ce passe là : « http://www.verilog.net/dirb.info/bashDirB« . La version intégrant les dernières modifications de la librairie est la version « + » ( http://www.verilog.net/dirb.info/bashDirB+ )

Si, comme moi, vous désirez conserver votre prompt habituel, commentez la définition de « PS1 » dans le fichier des sources de DirB :

fhh@mafalda ~ $ grep PS1 .bashDirB
# PS1="\[\033]0;\w\007\]\t \!> "

Pour que les fonctionnalités du script soient opérationnelles dans le shell courant lancez son chargement manuellement :

fhh@mafalda ~ $ source .bashDirB

Afin que le script soit chargé systématiquement, ajoutez à la fin de votre fichier de préférence BASH, généralement « ~/.bashrc », le chargement des sources DirB :

fhh@mafalda ~ $ echo "source ~/.bashDirB" >> ~/.bashrc

Utilisation

La librairie DirB ajoute quelques fonctions au bash courant :

  • d <bookmark> : affiche le chemin du bookmark spécifié ;

  • g <bookmark|répertoire|rien> : se comporte comme « cd ». « g » Sans paramètre vous ramène dans votre home, « g répertoire » vous place dans le répertoire spécifié, « g bookmark » vous ramène dans le répertoire « bookmarké » ;

  • h (version DirB+ uniquement) : affiche un message d’aide à l’utilisation de DirB ;

  • p <bookmark|répertoire> : empile le bookmark spécifié ou le répertoire dans une liste ;

  • r <bookmark> : supprime le marque page spécifié ;

  • s <bookmark> <répertoire> : ajoute le marque-page « bookmark » pointant vers « répertoire ». Les chemins peuvent être précisé en absolu (depuis la racine) ou en relatif (depuis le répertoire courant). Si « répertoire » n’est pas précisé, « bookmark » pointera vers le répertoire courant.

  • sl [options] : affiche les informations sur les marque-pages définis. L’option « –help » affiche une aide à l’utilisation de la fonction (en fait l’aide de « ls »).

Comme vous pouvez le constater, les commandes sont concises. Dès que la librairie DirB est « sourcée », vous pouvez utiliser « g » exactement comme « cd » :

fhh@mafalda ~ $ g /usr/src/linux-headers-2.6.32-23
fhh@mafalda /usr/src/linux-headers-2.6.32-23 $

rien ne change, même pas la complétion. Vous pouvez alors définir un « bookmark » sur le répertoire courant :

fhh@mafalda /usr/src/linux-headers-2.6.32-23 $ s kd # pour "kernel directory" par exemple

les accès à ce répertoire sont alors direct via « g » :

fhh@mafalda /usr/src/linux-headers-2.6.32-23 $ g
fhh@mafalda ~ $ g kd
fhh@mafalda /usr/src/linux-headers-2.6.32-23 $

Comme dit précédemment, vous pouvez marquer un répertoire en précisant son chemin :

fhh@mafalda /usr/src/linux-headers-2.6.32-23 $ s a /etc/apache2
fhh@mafalda /usr/src/linux-headers-2.6.32-23 $ g a
fhh@mafalda /etc/apache2 $ g
fhh@mafalda ~ $

La commande « d » affiche le chemin vers le répertoire « bookmarké » et peut être utilisée pour la définition de variables :

fhh@mafalda ~ $ d a
 "/etc/apache2"
fhh@mafalda ~ $ APACHE_DIR=$(d a)
fhh@mafalda ~ $ echo $APACHE_DIR
"/etc/apache2"

« sl » affiche la liste des différents marque-pages au format court ou long :

fhh@mafalda ~ $ sl
a  kd
fhh@mafalda ~ $ sl -Al
total 8
-rw-r--r-- 1 fhh fhh 20 2010-12-16 21:29 a
-rw-r--r-- 1 fhh fhh 37 2010-12-16 21:26 kd

Sur la version « + » de DirB, l’option « -p » affiche le répertoire vers lequel pointe chaque raccourci :

fhh@mafalda ~ $ sl -p
a:     /etc/apache2
kd:    /usr/src/linux-headers-2.6.32-23

Si un bookmark et un répertoire du même non existent, la navigation variera en fonction du paramètre d’appel de « g » :

fhh@mafalda ~ $ mkdir kd
fhh@mafalda ~ $ g kd
fhh@mafalda /usr/src/linux-headers-2.6.32-23 $ g
fhh@mafalda ~ $ g kd/ # ou ./kd
fhh@mafalda ~/kd $

Le remplacement du « bookmark » est tout aussi simple :

fhh@mafalda ~/kd $ s kd  # kd pointe maintenant vers ~/kd
fhh@mafalda ~/kd $ cd /
fhh@mafalda / $ g kd
fhh@mafalda ~/kd $

Enfin la commande « r » assure la suppression des « bookmarks » indésirables :

fhh@mafalda ~/kd $ sl
kd  a
fhh@mafalda ~/kd $ r kd
fhh@mafalda ~/kd $ sl
a
fhh@mafalda ~/kd $ s kd /usr/src/linux

La fonction « p » permet d’empiler un certain nombres de chemin et d’y accéder rapidement via leurs emplacement dans la pile :

fhh@mafalda ~ $ p -
bash: popd: directory stack empty
~
fhh@mafalda ~ $ p /tmp/
/tmp
~
fhh@mafalda /tmp $ p kd
/usr/src/linux
/tmp
~
fhh@mafalda /usr/src/linux $ p /etc/init.d/
/etc/init.d
/usr/src/linux
/tmp
~
fhh@mafalda /etc/init.d $ p /opt/install/
/opt/install
/etc/init.d
/usr/src/linux
/tmp
~

Les entrées sont numérotées de bas en haut en commençant par l’indice « 0 » si vous utilisez le « – » dans l’appel de l’entrée et dans le sens contraire si vous préférez le « + ». Dans l’exemple de la pile ci dessus, nous retournerions dans les sources du noyau via la commande « p -2 » équivalente à « p +2 ».

fhh@mafalda /opt/install $ p -2
/usr/src/linux
/tmp
~
/opt/install
/etc/init.d
fhh@mafalda /usr/src/linux $

Conclusion

Cet ensemble de fonctions est rapide a prendre en main et simple d’utilisation. Lors de développement ou de débogages de systèmes, cet outil devient un allié appréciable. A l’usage, la complétion des noms de marque-pages en plus des répertoires courant serait la bienvenue…

Références

L’article de Ira Chayut sur Linux Journal : http://www.linuxjournal.com/article/10585

Le site du projet : http://www.dirb.info/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *