コマンド出力をファイルとコンソールにもスローしようとしています。これは、出力の記録をファイルに残したいためです。私は次のことを行っており、ファイルに追加していますが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 」とは何ですか? )。最後に、上記の両方のコマンドでファイルが切り捨てられ、クリアが開始されます。一連のコマンドを使用する場合、それらすべての出力とエラーを次々に取得したい場合があります。この場合、「tee」コマンドに -a フラグを使用できます。
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