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
Il y a 3 fichiers
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.
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
On peut rediriger un fichier en entrée vers une commande, ou avec un while
while read ligne do traitement done <fichier1
la commande read ne lit pas l'entrée standard stdin mais le fichier1
On peut aussi remplacer <fichier1 par une commande avec par exemple < <(find …)
Cette redirection qui remplace le stdin est très intéressante pour tester des scripts et faire des scripts automatique
adduser nom <ajout_nom
Cette commande permet de créer un utilisateur nom avec un fichier ajout_nom
Dans un script, on peut ainsi gérer une classe entière, nom est alors une variable et le fichier ajout_nom est un fichier qui est créé dynamiquement dans le script en fonction de la variable nom et d'une fonction (un modèle).
La commande cat «EOF
bonjour
tout le monde
EOF
le symbole «EOF attend EOF pour finir la commande cat, on peut remplacer EOF par le terme de son choix
affiche:
bonjour
tout le monde
On peut enregistrer dans un fichier avec
cat «EOF >tmp
bonjour tout le monde
EOF
le fichier tmp contient : bonjour tout le monde