Menu Fermer

12 astuces bash à connaitre sur Linux

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.

12 astuces bash à connaitre sur Linux

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.

[email protected]:/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?
[email protected]:/home$ sudo !!
sudo apt install pv
Réutiliser les dernières commandes depuis l'historique bash Linux

Par exemple pour réutiliser la 6eme dernière commande utilisées :

!-6

Pour passer la 2009eme commande de l’historique :

!2009
Répéter une précédente commande en bash sur Linux

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.

[email protected]:/tmp$ mkdir demo
[email protected]:/tmp$ ls -lh !$
ls -lh demo
total 0
[email protected]:/tmp$ touch demo/demo.txt
[email protected]:/tmp$ !ls
ls -lh demo
total 0
-rw-r--r-- 1 debian debian 0 Dec  1 08:24 demo.txt
Répéter une commande qui commence par un mot spécifique en Bash Linux

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 !$

[email protected]:/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éutiliser premier mot d'une commande en Bash Linux

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
Réutiliser une commande en remplaçant un mot

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 .. :

[email protected]:~/.ssh$ pwd
/home/debian/.ssh
[email protected]:~/.ssh$ cd ..
[email protected]:~$ pwd
/home/debian
[email protected]:~$

Il est aussi possible de revenir à deux niveaux de l’arborescence comme ceci :

[email protected]:~/.ssh$ cd ../..
[email protected]:/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.

[email protected]:/tmp$ cd ~/
[email protected]:~$ pwd
/home/debian
[email protected]:~$ cd -
/tmp
[email protected]:/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

Les raccourcies clavier d'un terminal Linux
Raccourcis clavierDescription
CTRL+ADéplacer le curseur en début de commande
CTRL+EDéplacer le curseur en fin de commande
ALT+BDéplacer le curseur en début de mot
ALT+FDé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+KSupprimer tous les mots jusqu’à la fin de la ligne
Les raccourcis clavier bash