Le système d'exploitation GNU-Linux/Redirection des entrées/sorties

Un livre de Wikilivres.
Aller à : navigation, rechercher


  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix, l'interface console
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
    13. Locale
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms BIND
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de fichiers FTP
    8. Le serveur Web Apache
    9. La base de données MySQL
    10. Le serveur de mails Postfix
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs


Les entrées/sorties des processus[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

Rediriger la sortie standard[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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 1>>resultat

Ce qui revient au même que les deux premiers exemples ci-dessus (redirection et concaténation).

Rediriger la sortie d'erreur standard[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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 1>stdout_stderr.txt 2>&1

Le fichier stdout_stderr.txt contient ce qui a été affiché à la fois sur le flux de sortie standard et le flux de sortie d'erreur.

Échange des deux flux de sortie[modifier | modifier le wikicode]

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)[modifier | modifier le wikicode]

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.

Autre exemple : extraire l'adresse IP de la carte réseau eth0 :

 $ ifconfig eth0 | grep 'inet adr' | cut -f2 -d':' | cut -f1 -d' '
 192.168.30.50