2017-05-22 8 views
1

私はprintfコマンドを持っていますが、ファイルを書きますが、stdoutには印刷されません。私は両方を持っていたいので、ユーザーに何が起こっているのかを見せることができ、同時にログファイルにレコードを書き込むことができます。printfを使って新しいファイルを書き、既存のファイルを追加し、stdoutに書き込む方法は?

printf "%s\n" "This is some text" "That will be written to a file" "There will be several lines" | tee -a bin/logfile.log > bin/newfile.conf

ログファイルに追加し、新しいファイルに書き込みますが、画面に何も出力が書き込まれていない:(

OSそのコマンド:あなたがリダイレクトしているためですCentOSに7

答えて

4

を使用して画面に出力する場合は、> bin/newfile.confを入力してください。>とそれ以降はすべて削除してください。画面に加えて両方のファイルに同時に出力する場合は、teeを2回使用してください。 :

logfile.logに追加し、 newfile.confを上書きし、また画面に書き出す
printf ... | tee -a bin/logfile.log | tee bin/newfile.conf 

。必要に応じて-aオプションを使用するか省略してください。それは複数のファイル名を受け入れるので、あなたも一度teeを使用することができますJohn1024 points outとして

、その場合の-aapplies to all filenamesものの、それはあなたが対上書き動作APPENDは、すべてのファイルに同じようにしたい場合に役立ちます。

+0

私は実際には新しいファイル(confファイル)として2つのファイルに移動する必要があり、もう1つは追加する(ログファイル)、私は 'tee'を2回行うことはできますか? – bc81

+0

@ bc81はい、あなたは 'tee'を2度書くことができます。追加したいものには' -a'を使います。私は例を修正した。 'tee'は"パイプ "の"タップ "に似ていますが、実際には、パイプコマンドの連鎖の任意のポイントで、ストリームをファイルにダンプすることができます。 –

+0

ありがとう、非常に役立つ! – bc81

関連する問題