Guillaume Fenollar DevOps et SysAdmin Freelance

Guillaume FENOLLAR

Ingénieur Linux/DevOps Indépendant

− Montpellier −

Les meilleurs raccourcis bash pour maîtriser la ligne de commande

Ces commandes bash ne vous paraîtront peut-être pas d’une utilité flagrante si vous n’êtes qu’un utilisateur ponctuel du manchot, mais si comme moi vous passez le plus clair de vos journées dans la matrice, alors cet article va peut-être vous faire gagner de précieuses minutes, que dis-je, des heures cumulées ! :-)

Ici je vais essayer de ne pas parler de choses trop évidentes, comme le retour à la commande précédente, via la touche “haut”. Mince, j’ai réussi à en parler quand même. :-/ Passons.

Se déplacer rapidement parmi ses arguments

[ctrl] + [gauche/droite] → Pointe le curseur sur le début/la fin du mot précédent/suivant.
ou 
[ctrl] + k → Efface le reste de la ligne à droite du curseur.
[ctrl] + w → Efface le dernier mot, jusqu’au prochain espace rencontré.
[echap] puis [retour-arrière] → Efface le dernier mot, jusqu’au prochain caractère spécial (virgule par exemple) ou espace.
[ctrl] + u → Efface le début de la ligne jusqu’au curseur.
[ctrl] + y → Colle la portion de commande effacée dans la commande ci-dessus. 
  Ce combo est super pratique si vous vous rendez compte qu’il vous faut lancer une autre commande, 
  avant celle que vous vous apprêtiez à lancer!

Se déplacer facilement dans son système

cd → Se retrouver dans son home directory. (/home/$USER ou /root par exemple)
cd - → Se déplacer dans le précédent dossier visité (équivalent plus court de 'cd $OLDPWD'
$CDPATH → Cette variable permet de spécifier un dossier habituel. Si vous essayez de vous déplacer dans un dossier qui n’existe pas 
  dans le dossier courant, il essaiera de trouver ce dossier dans un éventuel dossier nommé selon le contenu de la variable.

Utiliser intelligement son historique

[ctrl] + r → Permet de faire une recherche arrière sur l’historique. Commencez à taper une commande, 
  et répétez les touches pour naviguer dans les occurrences.
history → Dès que vous êtes en galère sur un serveur pour savoir ce qui vient d'être fait, 
  n’oubliez jamais de jeter un coup d’oeil à son historique ! L'historique n'est par contre enregistré
  que lorsqu'un terminal est fermé de façon propre.
^sudp^sudo → Remplace le premier argument (sudp) par le deuxième (sudo) dans la dernière commande, en la relançant. 
  Même effet que !!:s/sudp/sudo/ (Eh oui, on peut seder sur une commande d’historique, ça vous épate, hein? :-D )
sudo !! → Les ‘!!’ seront remplacés par la dernière commande lancée dans son intégralité. 
  Très pratique si vous devez relancer la même commande que la précédente avec les droits root! (Et une perte de temps en moins!)
!-n → Même chose, sauf que ce n’est pas la dernière commande qui est utilisée, 
  mais celle se situant à la ’n’ place dans l’historique, en partant de la fin.
!vim → Va chercher la dernière commande (vim ici pour l’exemple) du même nom pour la relancer.†
[alt] + [.] → Colle le tout dernier argument de la dernière commande lancée. Astuce très mésestimée et pourtant ma préférée.

sudo

Profiter des commandes groupées

La puissance de la ligne de commande bash vient en grande partie de sa capacité à faire des traitements de groupe. Pas forcément besoin d’utiliser des boucles dans des scripts, ils peuvent être souvent utilisés à la volée pour vous faire gagner un temps monstre!

liste=”2010 2011 2012 2013 2014 2015" 
for m in $liste; do 
mkdir -p $m/{1..12} 
done

Ces quelques lignes écrites en 20 secondes permet de créer un dossier par mois, pour ces six années là. Combien de temps ça aurait pris à la souris ? :-) La boucle for est très facile à utiliser, et se passe de commentaire.

Le {1..12} permet de créer une autre boucle, couvrant intervalle entre les deux nombres choisis. On peut utiliser des virgules pour gérer une liste définie (ex: {1,2,4,6}). Si vous avez compris ce principe, alors vous devriez vite piger que le script précédent peut alors s’écrire d’une façon bien plus condensée:

mkdir -p 201{0..5}/{1..12}
Encore plus puissant: vous pouvez inclures des accolades, dans d’autres accolades. Si si.
echo 1{2,3,{4..8}5}
Allez, je suis sûr que vous trouverez une utilisation à ce genre de choses :-D