>

Dans Bash et certains autres shell, les caractères plus grand et plus petit sont des opérateurs de redirections. Ces opérateurs permettent de changer respectivement les flux de sortie et d'entrée des commandes.

La caractère plus grand permet de changer le flux de sortie standard des commandes.

Flux de sortie

Une commande à trois flux standard, le flux 0 ou stdin qui correspond au clavier par défaut, le flux 1 ou stdout qui permet d'afficher des messages à la console, et le flux 2 ou stderr qui permet d'afficher des messages d'erreur.

Les flux de sortie standard (1) et d'erreur standard (2) peuvent être redirigé dans un fichier à l'aide de ">" et "2>" respectivement.

Flux de sortie standard

La sortie standard est normalement affichée à la console, on peut la rediriger dans un fichier à l'aide de ">". Voici par exemple l'utilisation de ifconfig, et la même commande dont le résultat est inscrit dans un fichier:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:10:DC:C8:A5:4E  
          inet addr:172.17.13.18  Bcast:172.17.13.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:220343681 errors:0 dropped:0 overruns:0 frame:0
          TX packets:283924372 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3617579632 (3.3 GiB)  TX bytes:702189704 (669.6 MiB)
$ ifconfig eth0 > result.eth0
$ cat result.eth0
eth0      Link encap:Ethernet  HWaddr 00:10:DC:C8:A5:4E  
          inet addr:172.17.13.18  Bcast:172.17.13.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:220343681 errors:0 dropped:0 overruns:0 frame:0
          TX packets:283924372 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3617579632 (3.3 GiB)  TX bytes:702189704 (669.6 MiB)

Flux d'erreur standard

Le flux d'erreur est l'équivalent du flux de sortie mais concerne les messages d'erreur. Son numéro est 2 et sa redirection se fait à l'aide de "2>".

Voici par exemple une erreur de droit avec la commande wc, et son enregistrement dans un fichier:

$ wc -l /etc/shadow
wc: /etc/shadow: Permission denied
$ wc -l /etc/shadow 2> erreur.message
$ cat erreur.message
wc: /etc/shadow: Permission denied

Ignorer les messages

Pour le lancement de démons et de serveurs, les messages de sorties peuvent parfois être ignorées, et la commande ne doit pas être attaché au shell. Dans ce cas, on redirige les messages vers le fichier particulier /dev/null. Ce fichier est un descripteur particulier qui ne sauvegarde rien de ce qui y est écrit.

Voici par exemple le lancement de la commande srcd_run en ignorant les messages:

$ ./srcds_run -game tf +maxplayers 24 >/dev/null 2>/dev/null &

Notez le caractère "&" final pour lancer la commande en arrière plan.

Plutôt que de réécrire 2 fois "/dev/null", on peut utiliser le raccourci "&1" qui permet de rediriger le flux courant dans le flux de numéro 1.

Voici par exemple la même commande que la précédente avec le racourci de redirection:

$ ./srcds_run -game tf +maxplayers 24 >/dev/null 2>&1 &

Page de manuel

Les opérateurs de redirection ne sont pas des commandes standards mais sont paramètres interprété par le shell. Dans le cas de Bash, les opérateurs de redirections sont décrit dans la page de manuel de Bash, dans la section "redirection".