Je sais que cela a été un problème pendant un certain temps et j'ai trouvé beaucoup de discussions à ce sujet, mais je n'ai pas compris ce qui serait finalement un moyen de le faire: pipe à la fois, stdout et stderr. En bash, ce serait simplement:
cmd 2>&1 | cmd2
Cette syntaxe fonctionne aussi pour les poissons. Une démo:
$ function cmd1
sh -c 'echo "this is stdout"; echo "this is stderr" >&2'
end
$ function cmd2
rev
end
$ cmd1 | cmd2
this is stderr
tuodts si siht
$ cmd1 2>&1 | cmd2
rredts si siht
tuodts si siht
Vous pouvez aussi utiliser cmd1 ^&1 | cmd2
pour utiliser le symbole de redirection stderr du poisson.
Documents: https://fishshell.com/docs/current/index.html#redirects