J'utilise intensément la ligne de commande, que ce soit sous OS X, FreeBSD ou Linux.

Au fil du temps, j'ai pris quelques habitudes d'utilisation que je partage aujourd'hui avec vous.

Pour naviguer dans la commande en cours d'écriture, taper les commandes suivantes permet :

  • ctrl+A: D'aller au début de la ligne.
  • ctrl+E: D'aller à la fin de la ligne.
  • ctrl+B: De reculez d'un caractère.
  • ctrl+F: D'avancer d'un caracère.
  • esc+B: De reculer d'un mot.
  • esc+F: D'avancer d'un mot.
  • ctrl+U: De tout effacer du curseur jusqu'au début de la ligne.
  • ctrl+K: De Tout effacer du curseur jusquà la fin de la ligne.

L'ajout des lignes suivantes dans votre fichier .inputrc vous permettra de naviguer plus efficacement (à mon goût) dans votre historique :

  • "\e[A": history-search-backward
  • "\e[B": history-search-forward

Il vous suffira ensuite de taper les premières lettres de la commande que vous voulez récupérer dans votre historique et ensuite d'utiliser les flèches ↓ et ↑ de votre clavier pour la localiser précisément.

Les commandes suivantes, connues sous le nom de word designator, sont également très pratiques pour manipuler les arguments d'une commande précédemment exécutée :

  • !:1… !:n permettent de récupérer l'argument correspondant.
  • !^ permet de récupérer le premier argument.
  • !$ permet de récupérer le dernier argument.
  • !:2-4 permet de récupérer du second au quatrième arguments (par exemple).

Il est également possible d'altérer le résultat des commandes précédentes, grâce aux modifiers :

  • :h permet d'extraire le répertoire correspondant à l'argument désigné par le word designator, si ce dernier a la structure d'un chemin de fichier (par exemple !:2:h).
  • :t permet d'extraire le nom du fichier correspondant à l'argument désigné par le word designator, si ce dernier a la structure d'un chemin de fichier (par exemple !:3:t).
  • s/foo/bar permet de remplacer la première occurence de la chaîne foo par bar dans l'argument désigné par le word designator (par exemple !:3:s/foo/bar).
  • s/foo/bar/g permet de remplacer toutes les occurences de la chaîne foo par bar dans l'argument désigné par le word designator (par exemple !:3:s/foo/bar/g).

Si vous utilisez les astuces précédentes, je vous recommande d'ajouter shopt -s histverify à votre .bashrc.

Ainsi, votre shell effectuera les substitutions demandées mais au lieu d'exécuter la commande obtenue, il vous l'affichera afin que vous puissiez la vérifier et éventuellement l'éditer.

Autre astuce toujours relative à l'utilisation de l'historique, !! permet de récupérer la dernière commande exécutée.

En conséquence, elle est très utile lorsque vous exécutez une commande sans disposer des droits d'administration, pusiqu'un simple sudo !! permet d'exécuter à nouveau la commande avec sudo.

Ce sont les commandes que j'utilise le plus régulièrement pour manipuler mon historique, mais il en existe d'autres, très puissantes mais que je n'utilise que très rarement.

Pour plus d'informations à leur sujet, je vous invite à consulter l'excellente cheat sheet de Peteris Krumins.

Une autre commande utile au quotidien mais qui n'est pas directement en rapport avec l'utilisation de l'historique est cd -, qui permet de revenir dans le répertoire précédent après une utilisation de cd.

Dans un tout autre registre, l'ajout des commandes suivantes dans votre fichier .bashrc vous permettra d'avoir un prompt sur deux lignes et en couleur, en fonction du fait que vous êtes connecté à un hôte distant via SSH et que vous disposez ou non des droits d'administration :


if [[ $SSH_CLIENT == '' ]];
then
PS1GLOBALCOLOR="\[\033[0;36m\]"
else
PS1GLOBALCOLOR="\[\033[0;32m\]"
fi
if [[ $SUDO_USER != '' ]];
then
PS1USERCOLOR="\[\033[0;31m\]"
export PS1="\[\033]0;\u@\h:\w\007\]$PS1USERCOLOR\u$PS1GLOBALCOLOR@\h:\w\n$PS1GLOBALCOLOR\#>\[\033[0m\] "
else
PS1USERCOLOR=$PS1GLOBALCOLOR
export PS1="\[\033]0;\u@\h:\w\007\]$PS1USERCOLOR\u$PS1GLOBALCOLOR@\h:\w\$(__git_ps1 \"(%s)\")\n$PS1GLOBALCOLOR\#>\[\033[0m\] "
fi

Cerise sur le gâteau, il affiche également la branche active du dépôt Git dans lequel vous êtes.

Il faut cependant évidemment avoir chargé le fichier de complétion correspondant.

La commande shopt -s cdspell permet quand à elle à votre shell de corriger automatiquement vos (petites) erreurs de frappe lorsque vous tapez un chemin de fichier.