En Bash, 1 désigne stdout, et 2 stderr. Cela peut avoir une cohérence il me semble lorsque l'on connaît certains appels systèmes. Ceci dit, stderr – standard error – et stdout – standard output – sont moins cryptiques que 1 et 2. Et /dev/std... fonctionneront quel que soit le langage utilisé. Ils sont liés à Linux (Peut-être pourrais-je dire à Unix/POSIX ?).
Et quid de la cohérence ?
En Bash : >&1 redirige vers /dev/stdout >&2 redirige vers /dev/stderr
Le symbole de redirection serait donc >.
Et le pipe | redirigerait la sortie standard vers le programme à sa droite.
Sauf que avec |&, | redirige non stdout mais stderr, et non vers le programme à sa droite, mais vers & qui désigne cette fois non la mise en arrière plan mais /dev/stdout.
Avec Fish, l'esperluette a un usage unique, la mise en arrière plan, de même que > redirige toujours stdout, et ^ toujours vers stderr.
[^] # Re: Pipe erreur
Posté par pachamaro . En réponse au journal petite introduction à Fish. Évalué à 2.
En Bash,
1désigne stdout, et2stderr. Cela peut avoir une cohérence il me semble lorsque l'on connaît certains appels systèmes. Ceci dit, stderr – standard error – et stdout – standard output – sont moins cryptiques que1et2. Et /dev/std... fonctionneront quel que soit le langage utilisé. Ils sont liés à Linux (Peut-être pourrais-je dire à Unix/POSIX ?).Et quid de la cohérence ?
En Bash :
>&1redirige vers/dev/stdout>&2redirige vers/dev/stderrLe symbole de redirection serait donc
>.Et le pipe | redirigerait la sortie standard vers le programme à sa droite.
Sauf que avec
|&, | redirige non stdout mais stderr, et non vers le programme à sa droite, mais vers&qui désigne cette fois non la mise en arrière plan mais/dev/stdout.Avec Fish, l'esperluette a un usage unique, la mise en arrière plan, de même que
>redirige toujours stdout, et^toujours vers stderr.