web-dev-qa-db-fra.com

pipe à la fois, stdout et stderr dans la coquille de poisson

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
36
Anton Harald

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

33
glenn jackman