2017-07-04 12 views
1

スクリプトを実行してその内容を端末に出力する必要があります。 それから、最後の10行をターミナル出力から取得し、ログファイルに入れたいとします。 私は./script.sh 2>&1 | tail -10 > log.log を使用しようとしましたが、これは端末への出力を停止します。ターミナルに出力を表示し、最後の10行をログファイルに末尾に入力してください

+0

./script.sh 2>&1 | tail -10> log.logこれは動作しているようです。出力をコンソールにも出力しますか? –

+0

yesログ全体をコンソールに出力し、最後の10行をログファイルに追加したい場合 – Orion

+0

Stonyが述べたように、これにはteeコマンドを使用してください。\t ./script.sh 2>&1 |テール-10 | tee log.log –

答えて

1

レバレッジプロセス置換:

./script.sh |& tee >(tail -10 >file.txt) 

|&パイプ上STDOUTとSTDERRの両方を送信するためのショートカットです。

teeは、それが両方のSTDOUTへと引数(複数可)として与えられたファイル(複数可)にSTDINをだリダイレクトする - 私たちは、ファイルディスクリプタを取得するために、プロセス置換を使用して所望のコンテンツを保存するために、プロセス置換内tail -10 >file.txtを使用していました。

+1

これはまさに私が必要としていたものです。ありがとう – Orion

1

そのためには、teeコマンドを使用する必要があります。その後、ファイルとコンソールにパイプすることができます。 teebash

ls -a | tee output.file 
+0

./script.sh 2>&1 |テール-10 |この場合、tee log.logが動作します –

関連する問題