プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Linux、コマンドの実行結果を複数のファイルへ同時にリダイレクトする
結論から書くと、teeコマンドを使って

ls | tee hoge.txt hoge2.txt > /dev/null

のような形で行けました。
上の例では「ls」コマンドの出力結果が「hoge.txt」と「hoge2.txt」に出力されます。

それでは、詳細……というほどでも無いですが、詳細を書いていきます。

ちょっくらコマンドの実行結果をファイルに出力したくてですね。
例えば

ls > hoge.txt

のようにやっていたのです。
「ls」コマンドの実行結果を「hoge.txt」に出力しています。

この出力先を複数にしたかったのです。
例えば「ls」コマンドの実行結果を「hoge.txt」と「hoge2.txt」に出力する形です。

単純に複数のファイルを指定してもダメだと思うんだけど、
Google先生、どうでしょうか(--?

ふむふむ(--)

単純に複数のファイルを指定してもダメでした。
代わりに、teeコマンドを使って

ls | tee hoge.txt hoge2.txt > /dev/null

とかやれば、複数のファイルに出力できました。

teeコマンドは画面(標準入力)からの入力を画面(標準出力)とファイルに出力するコマンドです。
例えば

tee hoge.txt

を実行すると、入力待ちの状態になります。
その状態で「aaa」と入力してエンターキーを押したとしましょう。
そうすると、画面に「aaa」と表示されます。
それと同時にファイル「hoge.txt」にも「aaa」が書き込まれているのです。

このteeコマンドの入力にコマンドの実行結果を流し込むことで、
複数ファイルに出力できました。

順番に見ていいきましょう。

ls

を実行すると「ls」コマンドの結果が画面に出力されます。

ls | tee hoge.txt

を実行すると「ls」コマンドの実行結果が画面と「hoge.txt」に出力されます。
パイプ(|)でつなぐことで「ls」コマンドの実行結果を「tee」コマンドに流し込んでいるのです。

ls | tee hoge.txt hoge2.txt

を実行すると「ls」コマンドの実行結果が画面と「hoge.txt」と「hoge2.txt」に出力されます。
「tee」コマンドの出力先のファイルは複数指定できますよ。

ls | tee hoge.txt hoge2.txt > /dev/null

を実行すると「ls」コマンドの実行結果が「hoge.txt」と「hoge2.txt」に出力されます。
画面に対する出力を「/dev/null」(ゴミ箱)にリダイレクトしています。
結果として「ls」コマンドの実行結果はファイルにのみ出力される理屈です。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Linux  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事