2012-11-27 16 views
47

ファイルとコンソールにコマンド出力をスローしようとしています。これは、ファイルの出力を記録したいからです。私は次のことをやっていてファイルに添付していますが、端末に出力するのはlsです。コマンド出力がファイルと端末にリダイレクト

+2

典型的なティーユースケース – Kent

答えて

74

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

ls 2>&1 | tee /tmp/ls.txt 
+0

は、それが標準エラー&標準出力の両方を書くん??:この場合、あなたは「ティー」コマンドがする-aフラグを使用することができます – Satish

+2

この場合、エラーが出力( '2>&1')にマージされるので、パイプを消費する次のプロセスは、両方を通常の入力(要約:yes)と見なします。 –

+0

teeを使ってログを追加するにはどうすればいいですか? – Satish

9

出力を追加し、上書きしないようにする必要があり、「ティー」コマンドの「-a」または「--append」オプションを使用することが可能である:

ls 2>&1 | tee -a /tmp/ls.txt 
ls 2>&1 | tee --append /tmp/ls.txt 
+1

私はそれが好きです...それはMac上で円滑に働いています –

17

ことがあります2> & 1は、標準出力とともに標準エラーもリダイレクトされることを意味します。したがって

someCommand | tee someFile 

は標準出力ではなく、標準エラーではなく、ファイル内の標準出力を提供します。コンソールには標準エラーが表示されます。ファイルで標準エラーを取得するには、

someCommand 2>&1 | tee someFile 

(ソース:In the shell, what is " 2>&1 "?)を使用できます。最後に、上記の両方のコマンドがファイルを切り詰めてクリアします。一連のコマンドを使用している場合は、すべての出力を次々に出力することがあります。&

someCommand 2>&1 | tee -a someFile 
関連する問題