Aller au contenu

I/O Redirections

Descripteur Identifiant
Entrée standard stdin 0
Sortie standard stdout 1
Sortie erreur stderr 2

Redirection de sortie: >

Redirige la sortie standart vers un nouveau fichier:

$ ls > liste.txt

Redirige la sortie standart vers un fichier (ajoute à la suite):

$ ls >> liste.txt

Redirige la sortie erreur vers un fichier:

>2 erreur.log

Redirection d'entrée: <

Considère liste.txt comme entrée standart (au lieu du clavier):

$ sort < liste.txt

Envoyer un contenu à une commande avec votre clavier.

$ sort -n << FIN
heredoc… ❯ 45
heredoc… ❯ 23
heredoc… ❯ 12
heredoc… ❯ 78
heredoc… ❯ 45
heredoc… ❯ 9
heredoc… ❯ FIN
9
12
23
45
45
78

$ wc -m << STOP
heredoc… ❯ Combien de caracteres ?
heredoc… ❯ STOP
      24

On peut combiner les 2

$ sort < liste.txt > liste_triee.txt

Rediriger vers un autre descripteur: >&

Rediriger la sortie standard sur la sortie d'erreur:

$ echo "Error" 1>&2
$ echo "Error" >&2

Le trou noir: /dev/null

  • si on affiche son contenu, on n'obtient rien.
  • si on écrit quelque chose dedans, il disparait.
$ echo "Bonjour"
Bonjour

$ echo "Bonjour" >/dev/null

Connecter 2 processus: |

La sortie d'un programme est utilisée comme entrée d'un autre.

$ echo "Hello!" | tr "[:lower:]" "[:upper:]"
HELLO!

Erreurs

Rediriger les erreurs vers un fichier:

$ UneCommande 2>  fichier-erreurs.txt

Rediriger les erreurs vers un fichier (ajouter à la suite)::

$ UneCommande 2>> erreurs.log

Rediriger la sortie standart et les erreurs vers un fichier:

$ UneCommande 2> erreurs.log

Rediriger la sortie et les erreurs vers un fichier:

$ UneCommande 2>&1 | tee fichier.txt

Fusionner les sorties

Il est possible de fusionner les sorties (standart et erreur) dans un seul et même fichier.

$ bad_command >>filename 2>&1

Dernière mise à jour: March 7, 2020