web-dev-qa-db-ja.com

魚の殻にstdoutとstderrの両方をパイプ

私はこれがしばらくの間問題であることを知っていて、それについて多くの議論を見つけましたが、最終的にそれを成し遂げる方法となるものは得られませんでした:stdoutとstderrの両方をパイプします。 bashでは、これは単純に次のようになります。

cmd 2>&1 | cmd2
36
Anton Harald

この構文は、魚でも機能します。デモ:

$ 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

cmd1 ^&1 | cmd2を使用して、魚のstderrリダイレクトシンボルを使用することもできます。

ドキュメント: https://fishshell.com/docs/current/index.html#redirects

33
glenn jackman