Être à l'aise avec bash #2

Suite de la série d'articles sur comment rendre son shell bash un peu plus attractif et plus facile d'utilisation, avec cette fois ci quelques trucs pour se simplifier la vie dans la navigation au sein du système de fichier et sur la gestion des alias.

Navigation dans les répertoires

La variable CDPATH

Les shells sont configurés en partie à l'aide de variables d'environnement. Il en existe un certain nombre et celles définies sur votre système peuvent être listées à l'aide de printenv. Parmis ces variables, CDPATH permet de se simplifier la navigation dans l'arborescence à l'aide du shell et sa commande cd.

En effet, par défaut, cd xxxyyyzzz recherche le répertoire xxxyyyzzz dans le répertoire courant, mais en spécificiant la variable CDPATH, il est possible de demander au shell de regarder éventuellement dans d'autres répertoires si ce répertoire existe. J'utilise cette fonctionnalités pour naviguer rapidement dans les différents répertoires stockant les sites web sur ma machine en insérant la ligne suivante dans mon fichier .bashrc :

export CDPATH=".:/home/damien/public_html"

Ainsi à chaque fois que je fais un cd xxxyyyzzz, le shell cherche si xxxyyyzzz existe dans le répertoire courant, et si ce n'est pas le cas, il cherche en suite dans /home/public_html/damien. Il procède de la même manière, si on utilise le complètement avec la touche <Tab>.

Correction automatique

Une option permet de demander à bash de corriger les (petites) fautes frappes simples lors de l'utilisation de cd. Elle s'active avec la ligne suivante que l'on peut ajouter dans son .bashrc

shopt -s cdspell

Avec cette option certaines fautes sont corrigées :

> tigrou@Lorien[192.168.0.243]:~/tmp/test$ mkdir Documents
> tigrou@Lorien[192.168.0.243]:~/tmp/test$ cd Documen
bash: cd: Documen: Aucun fichier ou répertoire de ce type
> tigrou@Lorien[192.168.0.243]:~/tmp/test$ cd Document
Documents
> tigrou@Lorien[192.168.0.243]:~/tmp/test/Documents$ cd ..
> tigrou@Lorien[192.168.0.243]:~/tmp/test$ cd Documents-
Documents
> tigrou@Lorien[192.168.0.243]:~/tmp/test/Documents$

Quelques petits trucs avec cd

Taper cd sans argument permet d'aller directement dans son répertoire personnel.

En shell, ~ signifie le répertoire personnel de l'utilisateur, ainsi taper cd ~damien permet d'aller dans le répertoire personnel de l'utilisateur dont le login est damien. cd ~damien/Documents permet d'aller dans le répertoire Documents dans le home directory de damien. Si le login est omis, c'est celui de l'utilisateur courant qui est pris en compte.

cd - permet de retourner au répertoire précédent. Très pratique pour passer d'un répertoire à un autre éloiginé dans l'arborescence.

Les alias

Les alias permettent se simplifier des lignes de commandes en les réduisant au plus court et aussi de pallier aux fautes de frappe. Pour définir un alias, il suffit d'utiliser la commande interne alias. Lorsqu'un alias défini est tappé par l'utilisateur, le bash remplace simplement l'alias par sa définition. Quelques exemples de féfinitions (à mettre dans son .bashrc) :

alias cd..='cd ..'
alias rezo="sudo watch netstat -alpe --ip"
alias ag="sudo apt-get"
alias :wq='echo Je ne suis PAS vim'

Le premier permet aux habitués du DOS de garder leur habitudes. Le deuxième (rezo) permet de surveiller régulièrement quels programmes utilisent le réseau. Le troisième est un raccourci bien pratique enfin le dernier est là pour pallier à des erreurs de fenêtre.

Pour voir la liste des alias, il suffit de taper alias sans paramètre. La commande interne unalias permet de supprimer un alias dont le nom est passé en paramètre.

» Commentaires

- Petit complément (#62535) par noff le 01 novembre 2006 à 21:56
Ca fait du bien ce genre d'article, pour ma part j'avais complètement oublié l'histoire du CDPATH et je ne connaissais pas la commande shopt.

Par contre, je pense qu'il aurait été intéressant de parler du script bash_completion (programmable bash completion) qui est vraiment très pratique, même juste en utilisant les fonctions de base.
Par exemple si on utilise le complètement avec la commande cd, seuls les répertoires s'affichent, amusez vous aussi à tester avec la commande tar, si on fait <tab> sans avoir précisé les paramètres, ils s'affichent, si on les a précisés, seuls les repértoires et les archives s'affichent.
La page officielle : http://www.caliban.org/bash/#completion
Une petite intro rapide : http://ozlabs.org/~jk/docs/bash_completion/
- Tres interessant (#62536) par Ju. le 01 novembre 2006 à 21:58
Bien sympa ces billets, je connaissais pas le shopt -s cdspell je ferais jamais confiance a ce truc mais c'est bon a savoir.

;-p


Note le fil RSS des billets a l'air complet...
http://pwet.fr/rss/feed/tag_ubuntu

Mais ils apparaissent tronques sur le planet surement une errreur xml sur ton fil regarde ici :

http://validator.w3.org/feed/chec...%2Fpwet.fr%2Frss%2Ffeed%2Ftag_ubuntu

(note tu peux auto detruire ce message apres l'avoir lu ;-)
- apt-get (#62557) par darkagonik le 02 novembre 2006 à 00:03
Je n'utilise pas l'alias pour apt-get car la complétion pour les noms des paquets ne marche pas avec l'alias :(
- Re Être à l'aise avec bash #2 (#62561) par Damien le 02 novembre 2006 à 00:28
noff> c'est prévu dans un prochain billet de la série

Ju> pour la confiance, disons que pour cd le risque est limité. Pour le planet, c'est en cours de résolution, je pense, ça vient du planet, le fil RSS est valide, il a juste quelques warnings normalement sans conséquence...

darkagonik> tu as raison, si tu veux garder le complètement, il suffit de nommer ton alias apt-get.
- chouette (#62598) par crygor le 02 novembre 2006 à 13:47
Bonjour,

chouettes billets.

peut être a wikifier sur u-fr? en tout cas, je ne connaissais pas cd -.
j'attends aussi l'article sur bash-completion!
- pushd, popd (#64642) par CoolCubix le 23 février 2007 à 16:10
Petite astuce que j'ai vu sur LinuxFR et qui est bien pratique aussi lorsqu'on navigue dans l'arborescence, c'est pushd et popd. Il s'agit comme on aurait pu s'en douter d'un pile ou stack (donc de type last in, first out) contenant des répertoires.
Je ne détaille pas, juste un petit exemple :

coolcubix@wedge:~$ pushd /usr/src/linux/
/usr/src/linux ~
coolcubix@wedge:/usr/src/linux$ cd arch/i386/
coolcubix@wedge:/usr/src/linux/arch/i386$ pushd ~
~ /usr/src/linux/arch/i386 ~
coolcubix@wedge:~$ cd .evolution
coolcubix@wedge:~/.evolution$ popd
/usr/src/linux/arch/i386 ~
coolcubix@wedge:/usr/src/linux/arch/i386$ popd
~
coolcubix@wedge:~$

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.

Login