GNU/Linux >> Linux の 問題 >  >> Linux

bash:stderr をファイルにリダイレクトし、stdout + stderr を画面にリダイレクトします

最近の bash では、プロセス置換を使用できます。

foo 2> >(tee stderr.txt)

これは、tee を実行しているプログラムに stderr を送るだけです。

よりポータブル

exec 3>&1 
foo 2>&1 >&3 | tee stderr.txt

これにより、ファイル記述子 3 が現在の stdout (つまり、画面) のコピーになり、パイプをセットアップして foo 2>&1 >&3 を実行します。 .これにより、foo の stderr が現在の stdout と同じ場所 (パイプ) に送信され、stdout が元の出力である fd 3 に送信されます。パイプは foo の元の stderr を tee にフィードし、tee はそれをファイルに保存して画面に送信します。


Linux
  1. すべての出力を Bash のファイルにリダイレクトします

  2. stdout と stderr の両方にエコーする

  3. stdout と stderr をデフォルト値に戻す

  1. Linuxで出力をファイルとStdoutにリダイレクトする方法

  2. Linuxファイル記述子0 1 2がstdin、stdout、およびstderrではない可能性はありますか?

  3. <() の bash (および =() の zsh) とは正確には何ですか?

  1. プログラムの出力をリダイレクトし、それでもStdoutに送信する方法はありますか?

  2. StderrとStdoutを別のファイルにリダイレクトし、ターミナルに表示するにはどうすればよいですか?

  3. リダイレクトとパイプ出力?