#7 Redirections et enchaînement
>, >>, &&, ||
> -- Rediriger la sortie (écraser)
L'opérateur > redirige la sortie d'une commande vers un fichier. Si le fichier existe déjà, son contenu est remplacé :
$ echo "Bonjour" > salut.txt
$ cat salut.txt
BonjourC'est un moyen simple de créer un fichier avec du contenu en une seule commande.
>> -- Rediriger en ajoutant
L'opérateur >> ajoute la sortie à la fin du fichier sans écraser le contenu existant :
$ echo "Bonjour" > salut.txt
$ echo "Au revoir" >> salut.txt
$ cat salut.txt
Bonjour
Au revoir< -- Rediriger l'entrée
L'opérateur < envoie le contenu d'un fichier comme entrée d'une commande :
$ wc -l < notes.txt
3La différence avec wc -l notes.txt est subtile : avec <, la commande ne connaît pas le nom du fichier, elle reçoit juste son contenu.
&& -- Exécuter si succès
L'opérateur && exécute la commande suivante uniquement si la précédente a réussi (code de retour 0) :
$ mkdir projet && cd projet && echo "OK"
OK
# Les 3 commandes ont réussi
$ ls fichier-inexistant && echo "Trouvé"
ls: fichier-inexistant: No such file or directory
# echo n'est pas exécuté car ls a échoué|| -- Exécuter si échec
L'opérateur || exécute la commande suivante uniquement si la précédente a échoué. C'est l'inverse de && :
$ ls fichier-inexistant || echo "Pas trouvé"
ls: fichier-inexistant: No such file or directory
Pas trouvéC'est pratique pour fournir un comportement de secours.
; -- Exécuter dans tous les cas
Le point-virgule ; exécute la commande suivante quel que soit le résultat de la précédente :
$ echo "un" ; echo "deux"
un
deuxRécapitulatif
commande > fichier # Rediriger (écraser)
commande >> fichier # Rediriger (ajouter)
commande < fichier # Entrée depuis un fichier
cmd1 && cmd2 # cmd2 si cmd1 réussit
cmd1 || cmd2 # cmd2 si cmd1 échoue
cmd1 ; cmd2 # cmd2 dans tous les casÀ vous de jouer
Essayez les redirections et les opérateurs d'enchaînement dans le terminal ci-dessous. Créez un fichier avec >, ajoutez du contenu avec >>, puis vérifiez avec cat.