Sur la plupart des distributions Linux modernes Bash (Bourne à nouveau Shell) est le shell par défaut. Il existe de nombreuses fonctionnalités et options intégrées à BASH pour améliorer la productivité en ligne de commande.
Dans cet article, je vous donne 12 astuces bash à connaitre avec des exemples.

Table des matières
- 1 12 astuces bash à connaitre sur Linux
- 1.1 Réutiliser les dernières commandes depuis l’historique
- 1.2 Répéter une commande qui commence par un mot spécifique
- 1.3 Réutiliser les arguments dans une nouvelle commande
- 1.4 Réutiliser premier mot d’une commande
- 1.5 Répéter la dernière commande avec un nouveau argument
- 1.6 Réutiliser une commande en remplaçant un mot
- 1.7 Combiner des commandes pour une redirection unique
- 1.8 Créer un alias
- 1.9 Revenir au répertoire home
- 1.10 Se déplacer dans le répertoire parent
- 1.11 Retourner au répertoire de travail précédent
- 1.12 Les raccourcis clavier d’un terminal Linux
- 2 Liens
12 astuces bash à connaitre sur Linux
Réutiliser les dernières commandes depuis l’historique
Les commandes utilisées sont enregistrées dans le journal ~/.bash_history.
En utilisant la commande history, vous pouvez visualiser tout l’historique des commandes passées dans le terminal.
On peut donc rappeler les dernières commandes utilisées notamment avec la touche haut du clavier.
Mais il est aussi possible de les rappeler par le caractère !.
Pour répéter la dernière commande peut s’avérer utile lorsque l’on a oublié d’utiliser sudo.
debian@linux:/home$ apt install pv
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
debian@linux:/home$ sudo !!
sudo apt install pv
Par exemple pour réutiliser la 6eme dernière commande utilisées :
!-6
Pour passer la 2009eme commande de l’historique :
!2009
Notez que vous pouvez utiliser le raccourci clavier CTRL+R pour trouver une commande dans l’historique.
Répéter une commande qui commence par un mot spécifique
Vous pouvez aussi rappeler la dernière commande qui débute par un mot spécifique.
Le principe est d’utiliser ! avec le nom de la commande.
Par exemple, ci-dessous, on rappelle la commande ls précédente.
debian@linux:/tmp$ mkdir demo
debian@linux:/tmp$ ls -lh !$
ls -lh demo
total 0
debian@linux:/tmp$ touch demo/demo.txt
debian@linux:/tmp$ !ls
ls -lh demo
total 0
-rw-r--r-- 1 debian debian 0 Dec 1 08:24 demo.txt
Réutiliser les arguments dans une nouvelle commande
Les commandes dans un terminal fonctionnent souvent avec des arguments.
Il arrive donc que l’on travaille avec le même argument dans des commandes successives.
Au lieu de ressaisir ce dernier, on peut utiliser !$ pour demander son réutilisation.
Par exemple ci-dessous, on créé le dossier démo avec la commande mkdir.
Si on souhaite effectuer un ls demo, on peut saisir ls !$
debian@linux:/tmp$ mkdir demo
ls !$
ls demo
Notez que cela reprend aussi tout ce qui est entre guillemets ou quotes.
echo "ceci est une démo"
ceci est une démo
echo !$
echo "ceci est une démo"
ceci est une démo
Pour réutiliser tous les arguments d’une commande précédente, utilisez !*
touch fichier1 fichier2 fichier3 fichier4
chmod 777 !*
chmod 777 fichier1 fichier2 fichier3 fichier4
Réutiliser premier mot d’une commande
Pour réutiliser le premier mot, on utilise !^.
Ainsi si on affiche les informations du paquet pv avec APT :
sudo apt show pv
En passant la commande suivante, cela va passer apt install pv car apt est le premier mot de la commande précédente :
sudo !^ install pv
Répéter la dernière commande avec un nouveau argument
Au-dessus, nous avons discuté de l’utilisation du dernier argument avec une nouvelle commande.
Vous pouvez également utiliser la dernière commande avec un nouvel argument à l’aide de !!: 0.
touch demo/demo.txt
!!:0 demo/demo2.txt
touch demo/demo2.txt
Réutiliser une commande en remplaçant un mot
Dans l’astuce précédent, nous avons vu comment réutiliser l’argument d’une commande mais parfois on aimerait pouvoir réutiliser la commande en changeant un mot par un autre.
C’est possible grâce au caractère ^.
Par exemple dans l’exemple ci-dessous, on utilise APT pour installer l’utilitaire pv :
sudo apt install pv
Imagions que l’on veuille passer la commande apt search, on peut demander à remplacer install par search dans la commande précédente grâce au caractère ^ comme ceci :
^install^search
Attention, cela remplace que la première instance du mot :
echo "vache vache chien chien chat chat cheval cheval"
vache vache chien chien chat chat cheval cheval
^chat^chien
echo "vache vache chien chien chien chat cheval cheval"
vache vache chien chien chien chat cheval cheval
Pour remplacer tous les mots, utilisez en début de commandes !!:gs :
!!:gs^chat^chien
echo "vache vache chien chien chien chien cheval cheval"
vache vache chien chien chien chien cheval cheval
Combiner des commandes pour une redirection unique
En Bash, on peut combiner plusieurs commandes pour une exécution successifs.
En général, on utilise cela pour rediriger le résultat ou appliquer une opération logique dessus.
La syntaxe est la suivante :
( liste commandes )
Les commandes sont à séparer par un point virgule.
( echo hello ; echo world ) > /tmp/demo.txt
cat !$
cat /tmp/demo.txt
hello
world
A noter que l’on peut aussi utiliser les { } en terminant par un point virgule.
Dans ce cas là, les commandes s’exécutent dans un sous-shell et non dans le shell courant.
{ echo hello ; echo world; } > /tmp/demo.txt
Enfin on peut demander à exécuter les commandes en arrière plan grâce au caractère & :
(date ; ./execute_backup_db.sh ; date) & > execute_backup_db.log
Créer un alias
La commande alias permet de définir les raccourcis de commande. Ces raccourcis peuvent indiquer une seule commande avec vos arguments préférés ou un long pipeline de commandes.
Ainsi, on attribue un nom à l’alias que l’on peut ensuite utiliser dans un terminal.
Lorsque vous créez un alias, ce dernier est perdu au moment de fermer le terminal.
En bash, pour les rendre permanent, il faut les ajouter dans le fichier ~/.bashrc ou /etc/bash.bashrc au niveau système.
La syntaxe est :
alias nom_alias="commande"
Par exemple pour créer un alias awhois qui effectue un whois avec un affichage « humain readable » :
alias awhois='whois -h v4.whois.cymru.com -v'
Pour créer un alias lls qui effectuer utilisera la commande ls avec de la couleur et en détails :
alias lls="ls -lhc"
Enfin un alias peut remplacer le nom d’une commande, ainsi pour remplacer la commande ifconfig pour une utilisation colorée de de la commande IP :
alias ifconfig="ip -br -c addr show"
Revenir au répertoire home
Pour revenir rapidement au répertoire home, utilisez le caractère tilde ~ :
cd ~
A partir de là, il est possible de spécifier n’importe quel sous-répertoire du dossier /home, par exemple pour se rendre dans /home/debian/.ssh :
cd ~/.ssh/
Cela fonctionne en réalité pour n’importe quel répertoire home.
Imagions que vous êtes l’utilisateur debian, si vous souhaitez vous rendre dans le répertoire /home/malekalmorte alors utilisez :
cd ~malekalmorte
Se déplacer dans le répertoire parent
Sur n’importe quel endroit de la structure de répertoire, vous pouvez monter un répertoire à l’aide du double point (..).
Par exemple, ci-dessous je suis dans /home/debian/.ssh, pour revenir au répertoire parent, on utilise cd .. :
debian@linux:~/.ssh$ pwd
/home/debian/.ssh
debian@linux:~/.ssh$ cd ..
debian@linux:~$ pwd
/home/debian
debian@linux:~$
Il est aussi possible de revenir à deux niveaux de l’arborescence comme ceci :
debian@linux:~/.ssh$ cd ../..
debian@linux:/home$ pwd
/home
Ainsi de suite pour spécifier un niveau supplémentaire de l’arborescence.
Retourner au répertoire de travail précédent
Moins connus mais il est possible de revenir au répertoire de travail précédent avec cd –.
Dans cet exemple nous passons du répertoire /tmp à /home mais en utilisant cd -, on revient à /tmp.
debian@linux:/tmp$ cd ~/
debian@linux:~$ pwd
/home/debian
debian@linux:~$ cd -
/tmp
debian@linux:/tmp$
Les raccourcis clavier d’un terminal Linux
Bash regorge de raccourcis clavier que l’on peut utiliser dans n’importe quel terminal.
Voici les raccourci clavier les plus pratiques
Raccourcis clavier | Description |
CTRL+A | Déplacer le curseur en début de commande |
CTRL+E | Déplacer le curseur en fin de commande |
ALT+B | Déplacer le curseur en début de mot |
ALT+F | Déplacer le curseur en fin de mot |
CTRL+W | Supprimer le mot précédent |
ALT+D | Supprimer le mot suivant |
CTRL+U | Supprimer tous les mots jusqu’au début de la ligne |
CTRL+K | Supprimer tous les mots jusqu’à la fin de la ligne |