2016-05-30 6 views
12

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

cmd 2>&1 | cmd2 

答えて

15

この構文は魚でも機能します。デモ:あなたはまた、魚のstderrのリダイレクト記号を使用するcmd1 ^&1 | cmd2を使用することができます

$ 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 

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

+0

完璧。私は古いバージョンを使用していたことが判明しました。 –

+0

をファイルにリダイレクトするには、 'echo meow>/tmp/meow 2>&1'が使えます。 stdoutリダイレクションの後にstderrリダイレクションが必要です。 – nhooyr

関連する問題