bonjour ,
les 2 documents cités sont :
1- Introduction à la programmation en Bash en page 51
2 - Utiliser le pipe sur stderr - Linux Attitude au § " le niveau " vers la fin
-
doc1 en page 51 :
Attention :
Les redirections étant traitées de gauche à droite, l’ordre des redirections est important. -
doc2 :
Une dernière chose sur les redirections en bash, elles sont évaluées de droite à gauche.
Je vais me servir de l’exemple donné en page 51 par doc1 et à condition que j’interprète correctement :
La syntaxe &> fichier est équivalente à la syntaxe > fichier 2>&1
en prenant l’ordre (D → G ) de doc2 je pense que c’est correct et le fichier cible devrait enregistrer :
- soit une ligne correspondant à stdout ou stderr
- soit possiblement 2 lignes si ces sorties ne s’excluent pas mutuellement ( ce que je ne sais pas )
Si je prends la direction inverse le fichier enregistre stdout mais pas stderr à moins qu’il y ait un retour en arrière à partir de 2>&1 . Ça me semble un peu compliqué .
Comme les auteurs sont certainement des gens qui savent de quoi ils parlent il doit y avoir une explication .
ps : l’auteur de doc1 à qui j’ai soumis cette apparente contradiction vient de me répondre et me renvoie à Redirections (Bash Reference Manual) .
soit :
Note that the order of redirections is significant. For example, the command
ls > dirlist 2>&1
directs both standard output (file descriptor 1) and standard error (file descriptor 2) to the file dirlist, while the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the standard error was made a copy of the standard output before the standard output was redirected to dirlist.
ce qui me semble favoriser le sens (D–>G) mais bon ça n’est que mon interprétation .