next up previous contents index
Next: Processus Up: Approfondissement Previous: Quotation

Redirections et filtres

Chaque commande a une entrée standard, une sortie standard, et une sortie d'erreur. Par défaut, l'entrée standard est le clavier, la sortie standard est l'écran, et la sortie d'erreur est aussi l'écran.

On peut rediriger la sortie standard d'une commande vers un fichier (caractère >). Le résultat de la commande sera placé dans le fichier au lieu de s'afficher sur l'écran. Exemple:

poly=> ls -l >foo

Le résultat de ls -l ne s'affiche pas à l'écran, mais il est placé dans le fichier foo. On peut alors taper

poly=> more foo

pour lire le fichier page par page.

On peut aussi rediriger l'entrée standard d'une commande (caractère <). La commande lira alors le fichier au lieu du clavier. Exemple:

poly=> elm joffre <foo

envoie par mail à Joseph Joffre le résultat de la commande ls -l de tout à l'heure.

On peut aussi taper more <foo qui est équivalent à more foo car more sans argument lit son entrée standard et l'affiche page par page sur le terminal.

On peut aussi se passer du fichier intermédiaire grâce à un pipe (caractère |). Un pipe connecte directement la sortie standard d'une commande sur l'entrée standard d'une autre commande. Exemple: pour afficher page par page la liste des fichiers du répertoire courant, faire

ls -l |  more

La panoplie complète des redirections est la suivante:

>
change la sortie standard de la commande pour la placer dans un fichier.
<
change l'entrée standard de la commande pour la prendre dans un fichier.
>&
place la sortie standard et la sortie erreur dans un fichier.
|
branche la sortie standard de la commande de gauche sur l'entrée standard de la commande de droite.
|&
branche la sortie standard et la sortie erreur de la commande de gauche sur l'entrée standard de la commande de droite.
>>
change la sortie standard pour l'ajouter à la fin d'un fichier existant.
>>&
place la sortie standard et la sortie erreur à la fin d'un fichier existant.

Remarques: Normalement, une redirection avec > sur un fichier qui existe déjà efface le contenu du fichier avant d'y placer le résultat de la commande. Il existe une option qui dit au shell tcsh| de refuser d'effacer le fichier.

Le pipe avec | est utile pour capturer tout ce qui sort d'une commande. Exemple: ls -R / | more: affiche page par page la liste de tous les fichiers du système, sans que les messages d'erreur dérangent l'affichage.

Une ligne de commandes contenant des | s'appelle un pipe-line. Quelques commandes souvent utilisées dans les pipe-lines sont:

more
à la fin du pipe-line, affiche le résultat page par page, pour laisser le temps de le lire.
wc
compte le nombre de caractères, de mots et de lignes de son entrée.
grep
cherche dans son entrée les lignes contenant un mot donné, et les écrit sur sa sortie.
sort
lit toutes les lignes de son entrée, les trie, et les écrit dans l'ordre sur sa sortie
tail
écrit sur sa sortie les dernières lignes de son entrée.
head
écrit sur sa sortie les premières lignes de son entrée.
cat
copie plusieurs fichiers sur sa sortie.
fold
coupe les lignes de son entrée à 80 caractères et écrit le résultat sur sa sortie.

Exemples:

poly=> cat glop buz >toto

Concatène les fichiers glop et buz et place le résultat dans toto.

poly=> wc -w /usr/dict/words

Affiche le nombre de mots du dictionnaire Unix.

poly=> grep gag /usr/dict/words | tail

Affiche les 20 derniers mots du dictionnaire qui contiennent la chaîne gag.



next up previous contents index
Next: Processus Up: Approfondissement Previous: Quotation




Wed Jun 25 13:24:35 MET DST 1997