table

introduction

c'est quoi, Unix?

les Unix d'aujourd'hui

la console

accéder à la console

la ligne de commande

à la découverte du système de fichier

les attributs des fichiers

à propos du noyau

les processus

shell et ligne de commande

les variables d'environnement

les "pipes"

redirections et descripteurs de fichiers

un exemple

allons plus loin

redirections et descripteurs de fichiers

modifié le 02/09/2007 00:27:41

il arrive que nous ayons besoin de récupérer la sortie d'un commande dans un fichier, soit pour sauvegarder un état courant de la machine, soit pour présenter le résultat à d'autres (mail, traitement de texte...)

Unix propose un mécanisme de redirection dont s'est inspiré MS/DOS et que l'on retrouve dans la ligne de commande des Windows actuels

ps aux > processus

redirige l'affichage de ps aux vers le fichiers proc et on peut s'en convaincre en examinant le contenu du fichier par un cat

Unix ne s'arrête pas là, il peut faire mieux avec les descripteurs de fichier

Unix prétend que tout est fichier, la console comme la RS232 (un vieux truc qui connectait les vieux terminaux aux vieux ordinateurs...) et, parmi les fichiers de base, il y en a trois d'une extrême importance lorsqu'on travaille en ligne de commande:

  • stdin, associée par défaut au clavier
  • stdout, associée par défaut à l'écran du terminal
  • stderr, associée par défaut à l'écran du terminal

stdout, c'est là où s'affiche la sortie normale, stderr, c'est là où s'affichent les messages d'erreur, ce qui se fait habituellement sur l'écran

un des aspects géniaux d'Unix, à l'époque de sa création, c'est qu'il est possible de séparer, d'orienter ces sorties à notre gré: console, fichier, périphérique spécial ( RS232, par exemple)...

la redirection se fait donc grâce à >, la redirection d'un descripteur particulier se fait avec N>N est le descripteur en question

pour rediriger les erreurs d'un find, il faut faire:

find /etc -type f -exec grep -H "root" {} \; 2> find.log