« Le système d'exploitation GNU-Linux/Redirection des entrées/sorties » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 70 : | Ligne 70 : | ||
$ du | sort -rn | more |
$ du | sort -rn | more |
||
* |
* Connaître le nombre de fichiers du répertoire /usr/bin : |
||
$ ls -1 /usr/bin | wc -l |
$ ls -1 /usr/bin | wc -l |
Version du 12 octobre 2009 à 20:36
Les entrées/sorties des processus
Chaque processus possède 3 flux standards qu'il utilise pour communiquer en général avec l'utilisateur :
- l'entrée standard nommée stdin (identifiant 0) : il s'agit par défaut du clavier,
- la sortie standard nommée stdout (identifiant 1) : il s'agit par défaut de l'écran,
- la sortie d'erreur standard nommée stderr (identifiant 2) : il s'agit par défaut de l'écran.
Ces flux peuvent être redirigés afin que le processus interagisse avec un autre au lieu d'interagir avec l'utilisateur.
Redirection
Rediriger la sortie standard
Quand on exécute une commande, le shell affiche le résultat sur la console de sortie (l'écran par défaut). On peut rediriger cette sortie vers un fichier en utilisant le signe >.
Exemple
~$ ls>resultat_ls
Si le fichier existe déjà, il est écrasé.
Concaténation
Au lieu de créer un fichier, il est possible d'ajouter les sorties d'un processus à un fichier existant en utilisant le double signe >>.
Exemple
~$ ls >>resultat
Si le fichier résultat existe déjà, les affichages sont concaténés.
Syntaxe complète
En fait, les signes > peuvent être précédés de l'identifiant du flux à rediriger. Pour la sortie standard, on peut donc utiliser les syntaxes suivantes :
~$ ls 1>resultat_ls ~$ ls 1>>resultat
Rediriger la sortie d'erreur standard
La redirection du flux de sortie d'erreur standard utilise les même signes, mais précédés de l'identifiant du flux : 2.
Exemples
~$ ls 2>erreurs_ls ~$ ls 2>>erreurs_ls
Rediriger l'entrée standard
Rediriger l'entrée standard permet d'entrer des données provenant d'un fichier au lieu du clavier.
Exemple
~$ cat < mon_fichier.txt
Rediriger un flux vers un autre
Il est possible de rediriger un flux vers la sortie standard ou la sortie d'erreur en donnant l'identifiant du flux précédé du caractère & à la place du nom de fichier.
Exemple
~$ ls 2>&1 1>stdout_stderr.txt
Le fichier stdout_stderr.txt contient ce qui a été affiché à la fois sur la flux de sortie standard et le flux de sortie d'erreur.
Échange des deux flux de sortie
L'échange des deux flux de sortie s'effectue en utilisant la syntaxe pour rediriger un flux vers un autre à trois reprises, en utilisant un identifiant de flux fictif comme intermédiaire (3).
Exemple
~$ ls 2>&3 1>&2 3>&1
Le pipe (un tube)
Redirige la sortie d'une commande vers l'entrée d'une autre commande. Il s'agit donc d'une chaîne de redirection entre deux processus qui ne passe pas par un fichier, mais par une zone mémoire du système.
Exemples
- Afficher la taille des fichiers et répertoires, et les trier du plus grand au plus petit :
$ du | sort -rn
- Même résultat, mais affiché page par page :
$ du | sort -rn | more
- Connaître le nombre de fichiers du répertoire /usr/bin :
$ ls -1 /usr/bin | wc -l
Explications : L'option -1 de la commande ls affiche un fichier ou répertoire par ligne. La commande wc (word count) avec l'option -l (line) compte le nombre de lignes.
- Connaître tous les périphériques IDE détectés par le noyau Linux et les afficher page par page :
$ dmesg | grep hd | more
Explications : la commande dmesg affiche les messages du noyau Linux détectés durant le boot. La commande grep n'affiche que les lignes contenant le mot hd. La commande more affiche ces résultats page par page.