$_
StemLegacy
Phase 2Maîtriser bash

#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é :

Redirection avec écrasement
$ echo "Bonjour" > salut.txt
$ cat salut.txt
Bonjour

C'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 :

Redirection avec ajout
$ 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 :

Redirection d'entrée
$ wc -l < notes.txt
3

La 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) :

Enchaîner si succès
$ 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 && :

Enchaîner si échec
$ 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 :

Enchaîner toujours
$ echo "un" ; echo "deux"
un
deux

Récapitulatif

Résumé
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.

terminal — bash
user@stemlegacy:~$