La combinaison de deux commandes ou plus sur la ligne de commande est également appelée «chaînage de commandes». Nous allons vous montrer différentes manières de combiner des commandes sur la ligne de commande.
Première option: l'opérateur de point-virgule (;)
L'opérateur point-virgule (;) vous permet d'exécuter plusieurs commandes successivement, que chaque commande précédente aboutisse ou non. Par exemple, ouvrez une fenêtre de terminal (Ctrl + Alt + T sous Ubuntu et Linux Mint). Ensuite, tapez les trois commandes suivantes sur une ligne, séparées par des points-virgules, puis appuyez sur Entrée. Cela vous donnera une liste du répertoire en cours (
ls
), trouvez dans quel répertoire vous êtes actuellement (
pwd
) et affichez votre identifiant (
whoami
) tout à la fois.
ls; pwd; whoami
Vous ne devez pas non plus insérer d'espaces entre les points-virgules et les commandes. Vous pouvez entrer les trois commandes en tant que
ls;pwd;whoami
. Cependant, les espaces rendent la commande combinée plus lisible, ce qui est particulièrement utile si vous insérez une commande combinée dans un script shell.
Deuxième option: l'opérateur logique AND (&&)
Si vous souhaitez que la deuxième commande ne soit exécutée que si la première commande a abouti, séparez les commandes avec l'opérateur logique AND, qui correspond à deux esperluettes (
&&
). Par exemple, nous souhaitons créer un répertoire appelé MyFolder, puis le modifier, à condition qu'il ait été créé avec succès. Donc, nous tapons ce qui suit sur la ligne de commande et appuyez sur Entrée.
mkdir MyFolder && cd MyFolder
Le dossier a été créé avec succès, donc le
cd
La commande a été exécutée et nous sommes maintenant dans le nouveau dossier.
Nous recommandons d’utiliser l’opérateur AND logique plutôt que l’opérateur de point-virgule (
;
). Cela garantit que vous ne faites rien désastreux. Par exemple, si vous exécutez une commande pour passer à un répertoire puis forcez la suppression récursive de tous les éléments de ce répertoire (
cd /some_directory; rm -Rf *
), vous pourriez finir par ruiner votre système si le changement de répertoire ne s’était pas produit. Non pas que nous vous recommandons d’exécuter une commande pour supprimer inconditionnellement tous les fichiers d’un répertoire à la fois.
Troisième option: l'opérateur OU logique (||)
Parfois, vous voudrez peut-être exécuter une deuxième commande uniquement si la première commande ne pasréussir. Pour ce faire, nous utilisons l’opérateur OU logique, ou deux barres verticales (
||
). Par exemple, nous voulons vérifier si le répertoire MyFolder existe (
[ -d ~/MyFolder ]
) et le créer si ce n’est pas le cas (
mkdir ~/MyFolder
). Donc, nous tapons la commande suivante à l'invite et appuyez sur Entrée.
[ -d ~/MyFolder ] || mkdir ~/MyFolder
Assurez-vous qu'il y a un espace après le premier crochet et avant le deuxième crochet ou la première commande qui vérifie si le répertoire existe ne fonctionnera pas.
Dans notre exemple, le répertoire MyFolder n’existant pas, la deuxième commande le crée.
Combinaison de plusieurs opérateurs
Vous pouvez également combiner plusieurs opérateurs sur la ligne de commande. Par exemple, nous voulons d’abord vérifier si un fichier existe (
[ -f ~/sample.txt ]
). Si tel est le cas, nous imprimons un message à l'écran pour le dire (
echo “File exists.”
). Sinon, nous créons le fichier (
touch ~/sample.txt
). Donc, nous tapons ce qui suit à l'invite de commande et appuyez sur Entrée.
[ -f ~/sample.txt ] && echo “File exists.” || touch ~/sample.txt
Dans notre exemple, le fichier n’existait pas, il a donc été créé.
-
A; B
- Exécutez A puis B, quel que soit le succès ou l'échec de A
-
A && B
- N'exécutez B que si A a réussi
-
A || B
- Exécuter B uniquement si A échoue
Toutes ces méthodes de combinaison de commandes peuvent également être utilisées dans des scripts shell sous Linux et Windows 10.
Vous pouvez également corriger automatiquement l'orthographe et les fautes de frappe lorsque vous utilisez «cd» sur la ligne de commande sous Linux pour éviter des conséquences dramatiques lors de la combinaison de commandes.