Redirections

Sous Unix/Linux, un programme fonctionnant en mode texte utilise trois canaux principaux pour interagir avec l'utilisateur ou d'autres programmes.

  • Tout d'abord, chaque programme dispose d'une entrée standard (stdin). C'est sur son entrée standard qu'il lira les données à traiter. Par défaut, l'entrée standard est le clavier.
  • Les résultats calculés par un programme sont normalement émis sur sa sortie standard (stdout). Par défaut, la sortie standard correspond à l'écran (sous X11?, ce sera typiquement le terminal dans lequel le programme a été lancé).
  • Les messages d'erreurs éventuels sont émis sur la sortie d'erreurs (stderr). Par défaut, cette sortie correspond également à l'écran.

Une des forces de Unix est qu'il est facile de rediriger les entrées/sorties et de combiner des programmes entre eux.

Redirection de et vers un fichier

  • Redirection de la sortie standard vers un fichier à créer : >
    • date > /tmp/madate.txt : écrit la date actuelle dans le fichier /tmp/madata.txt et le créée si nécessaire. Si le fichier /tmp/madate.txt existait déjà, il est écrasé.
  • Redirection de la sortie standard vers un fichier : >>
    • date >> /tmp/madate.txt : écrit la date actuelle dans le fichier à la suite du fichier /tmp/madata.txt. Si le fichier n'existait pas, il est créé.
  • Utilisation d'un fichier comme entrée standard
    • sed -e "s/Sep/Septembre/" < ladate : utilise le fichier ladate comme entrée standard
  • Redirection de l'entrée et de la sortie standard
    • sed -e "s/Sep/Septembre/" < ladate >> lanouvelledate
  • Redirection des messages d'erreur
    • cat /scrountch 2> msgerreur
    • cat /scrountch > msg 2>&1

Combinaisons de programmes

  • Redirection de la sortie d'un programme vers l'entrée d'un autre : |
    • date | sed -e "s/Sep/Septembre/" : sed utilise comme entrée standard la sortie standard de la commande date
    • cat /tmp/t | sort | uniq | grep toto