[[.|retour]] ====== Redirection ====== http://fr.wikipedia.org/wiki/Bourne-Again_shell#Gestion_de_flux Pour des exemples complets et complexes http://abs.traduc.org/abs-5.3-fr/ch19.html http://www.ponge.com/telechargements/bash/index.html#sect_08_02_03 ===== Exemples simples : ===== Il y a 3 fichiers - stdin en entrée descripteur de fichier 0, symbole < - stdout en sortie standard descripteur de fichier 1, symbole > - stderr pour les erreurs descripteur de fichier 2, associés à stdout en général ==== Redirection de sortie ==== Pour regrouper 2 fichiers dans un fichier avec la commande cat cat fichier1 fichier2 >fichier3, le fichier 3 contient le fichier 1 suivi du fichier 2 Dans cet exemple la sortie stdout est envoyée dans le fichier3 la commande cat fichier1 fichier2 aurait affiché à l'écran les fichiers 1 puis 2. ==== Redirection de sortie avec erreur ==== La commande grep ^umask /etc/* affiche des sorties avec grep ... Permission non accordée et une ligne avec le fichier /etc/profile la commande grep ^umask /etc/* >tmp affiche les erreurs à l'écran Permission non accordée, le fichier tmp ne contient lui qu'une ligne avec /etc/profile Le fichier stderr reste à l'écran, le fichier stdout est redirigé dans tmp La commande grep ^umask /etc/* &>tmp ou grep ^umask /etc/* >tmp 2>&1 affiche les erreurs et la sortie normale dans le fichier tmp Le & ,regroupe stderr et stdout dans tmp, dans le deuxième cas la sortie 2 (stderr) est redirigée dans 1 (stdout) On peut évidemment se servir de la commande > dans un script pour écrire dans un fichier :>tmp #ceci vide le fichier tmp echo "bonjour" >tmp #écrit bonjour dans le fichier tmp Si on veut ajouter on utilisera >> La commande >>tmp ajoute à la fin si le fichier existe, sinon crée le fichier ==== Redirection d'entrée ==== On peut rediriger un fichier en entrée vers une commande, ou avec un while while read ligne do traitement done la commande read ne lit pas l'entrée standard stdin mais le fichier1 On peut aussi remplacer tmp bonjour tout le monde EOF le fichier tmp contient : bonjour tout le monde