Se simplifier la vie sous Bash

TerminalBash recèle d'astuces pour vous faire gagner du temps et vous rendre la vie plus facile. En voici quelques-unes (parmi bien d'autres).

Ré-exécuter des commandes

Bash propose plusieurs techniques pour vous éviter de devoir ré-écrire une commande déjà saisie conservée dans l'historique :

  • !! : ré-exécute la dernière commande
  • !42 : ré-exécute la commande en position 42 dans l'historique (la commande history permet d'afficher l'historique)
  • !foo : ré-exécute la dernière commande commençant par foo (merci à Snake23)
  • ^foo^bar : ré-exécute la dernière commande en remplaçant foo par bar
  • ctrl-r : lance une recherche dans l'historique des commandes : tapez simplement le début d'une commande pour la retrouver facilement

Mode Emacs ou Vi ?

Pour ne pas faire de jaloux, Bash possède deux modes correspondant aux deux éditeurs de texte bien connus, permettant de bénéficier de certains de leurs raccourcis clavier. En faisant "set -o vi" ou "set -o emacs" (le mode emacs est en fait activé par défaut), on définit le mode à utiliser.

Cela permet alors d'utiliser quelques combinaisons de touches bien pratiques :
en mode Emacs :

  • Ctrl-k : (comme kill) pour couper le texte du curseur jusqu'à la fin de la ligne
  • Ctrl-u : pour couper le texte du curseur jusqu'au début de la ligne
  • Ctrl-y : (comme yank) pour le coller
  • Meta-y : (soit Alt-y sur de nombreux claviers) pour effectuer une rotation entre les différentes valeurs du "kill-ring" (presse-papier de GNU readline)
  • Ctrl-x Ctrl-u : annuler le dernier changement à la ligne en cours

Un éditeur pour les longues lignes

Pénible n'est-ce pas d'éditer des commandes qui font plusieurs lignes ? Il faut ajouter des \\ à chaque fin de ligne, on ne peut pas remonter éditer ce qu'on a écrit à la ligne précédente, bref, on aimerait mieux faire ça dans un bon éditeur de texte.

Évidemment si je dis ça c'est que Bash le permet : un petit Ctrl-x-e et votre éditeur préféré (définit dans $VISUAL ou $EDITOR) se lance, vous permettant de saisir votre commande. Sauvegardez, quittez, et votre commande se lance.

CDPATH

Vous connaissez sans-doute déjà PATH, la variable qui contient les chemins dans lesquels Bash vas chercher les exécutables correspondant aux commandes que vous tapez, mais connaissez vous CDPATH, son pendant pour les dossiers dans lesquels vous voulez vous rendre avec cd ?

CDPATH vous permet de définir où la commande cd va chercher le dossier dont vous saisissez le nom. Par défaut elle cherche dans le dossier en cours, mais vous pouvez par exemple y ajouter votre homedir ou la racine pour accéder rapidement aux dossiers qu'ils contiennent. Il vous suffit pour cela de définir la valeur de CDPATH à CDPATH=.:~:/ (à faire dans votre ~/.bashrc pour rendre le changement permanent) et cd mondossier ira d'abord chercher "mondossier" dans le répertoire courant (.), puis dans votre homedir (~) et enfin à la racine (/).

Attention, cette astuce peut vite devenir agaçante, notamment lorsqu'on utilise l'auto-complétion et que Bash vous propose des tas de dossiers qui ne sont pas dans le dossier en cours.

Notez que cette astuce fonctionne aussi avec Zsh.

Options pratiques

Les options suivantes s'activent avec shopt -s nom_de_l_option. À mettre dans son .bashrc pour rendre les changements permanents.

Certaines de ces options sont pour Bash 4 ou supérieur uniquement. Pour connaître votre version de Bash : bash --version.

Globbing récursif (Bash 4)

Les utilisateurs de Zsh connaissent déjà le globbing récursif. Késako ? Et bien, de la même façon que, par exemple, ls /home/*/FooBar listera tous les fichiers FooBar se trouvant dans les répertoires directement situés dans /home (grâce au globbing, qui remplace "*" par les noms de fichier), avec le globbing récursif, ls /home/**/FooBar listera tous les fichiers FooBar se trouvant dans les répertoires directement situés dans /home ainsi que dans leurs sous-répertoires (et sous-sous-répertoires etc).

Les utilisateurs de Bash n'ont plus à être jaloux, le globbing récursif est dispo depuis Bash 4 et s'active grâce à l'option globstar (shopt -s globstar).

Autocd (Bash 4)

Fatigué de devoir taper cd devant chaque nom de dossier dans lequel vous souhaitez vous rendre ? Alors activez autocd (shopt -s autocd) et vous n'avez-plus qu'à taper le nom du dossier dans lequel vous souhaitez vous rendre pour y aller !

dirspell/cdspell

Corrige les erreurs dans les noms de dossiers (seulement si en argument de cd pour cdspell) si elles ne font pas plus d'une lettre. Pour ceux qui ont des gros doigts boudinés Happy.

Pour en faire plus

RTFM, évidemment !

Vus : 927
Publié par Zanko : 16