86

コマンド出力をファイルとコンソールにもスローしようとしています。これは、出力の記録をファイルに残したいためです。私は次のことを行っており、ファイルに追加していますがls、端末に出力を出力していません。

$ls 2>&1 > /tmp/ls.txt
4

3 に答える 3

129

はい、出力をリダイレクトすると、コンソールには表示されません。を使用しteeます。

ls 2>&1 | tee /tmp/ls.txt
于 2012-11-27T19:16:22.423 に答える
44

2>&1 は、標準出力とともに標準エラーもリダイレクトされることを意味することに注意してください。そう

someCommand | tee someFile

ファイル内の標準出力のみを提供しますが、標準エラーは提供しません。標準エラーはコンソールにのみ表示されます。ファイルでも標準エラーを取得するには、次を使用できます

someCommand 2>&1 | tee someFile

(ソース:シェルでは、「 2>&1 」とは何ですか? )。最後に、上記の両方のコマンドでファイルが切り捨てられ、クリアが開始されます。一連のコマンドを使用する場合、それらすべての出力とエラーを次々に取得したい場合があります。この場合、「tee」コマンドに -a フラグを使用できます。

someCommand 2>&1 | tee -a someFile
于 2014-11-05T12:21:21.697 に答える
18

出力をオーバーライドせずに追加する必要がある場合は、「tee」コマンドの「-a」または「--append」オプションを使用できます。

ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt
于 2013-11-05T11:08:09.287 に答える