Aller au contenu

Programmation Bash/Redirections

Un livre de Wikilivres.

Sous Unix, chaque processus possède trois flux :

  • la sortie standard, qui est utilisée pour afficher les résultats d'un programme ;
  • la sortie standard des erreurs, qui permet d'afficher les messages correspondant aux erreurs survenues lors de l'exécution du programme ;
  • l'entrée standard, qui permet d'envoyer des données au programme.

Par défaut les deux flux de sortie sont envoyés sur le terminal de l'utilisateur et l'entrée est prise sur le clavier. Tout étant représenté par des fichiers sous Unix, cela correspond à lire dans le fichier représentant le clavier pour l'entrée standard et écrire dans le fichier représentant le terminal pour les sorties standards.

Bash et Ksh permettent de rediriger les trois flux standards, ce qui revient à associer le flux à un fichier différent :

  • com > fic redirige la sortie standard de com dans le fichier fic ;
  • com 2> fic redirige la sortie des erreurs de com dans le fichier fic ;
  • com < fic redirige l'entrée standard de com dans le fichier fic.

Un tube permet de rediriger la sortie standard d'une commande dans l'entrée standard d'une autre commande.

commande1 | commande2

est (presque) équivalent à

commande1 > fichier_temporaire
commande2 < fichier_temporaire

Tee permet un embranchement, ce qu'il reçoit sur son entrée est redirigé vers un fichier et la sortie standard.

echo "toto" | tee f

affiche toto et créé le fichier f avec le texte toto.