コマンド出力をファイルとコンソールにもスローしようとしています。これは、出力の記録をファイルに保持するためです。私は以下を行っていますが、ファイルに追加していますが、端末にls
出力を印刷していません。
$ls 2>&1 > /tmp/ls.txt
はい、出力をリダイレクトすると、コンソールには表示されません。 tee
を使用します。
ls 2>&1 | tee /tmp/ls.txt
2>&1は、標準出力とともに標準エラーもリダイレクトされることを意味することに注意してください。そう
someCommand | tee someFile
ファイルの標準出力のみを提供し、標準エラーは提供しません。標準エラーはコンソールにのみ表示されます。ファイルの標準エラーも取得するには、使用できます
someCommand 2>&1 | tee someFile
(ソース: シェルでは、 "2>&1"?とは何ですか? )。最後に、上記のコマンドは両方ともファイルを切り捨て、クリアを開始します。コマンドのシーケンスを使用する場合、すべてのコマンドの出力とエラーを次々に取得することができます。この場合、-aフラグを使用して「tee」コマンドを実行できます。
someCommand 2>&1 | tee -a someFile
誰かが出力を追加する必要があり、オーバーライドしない場合、「tee」コマンドの「-a」または「--append」オプションを使用できます。
ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt