teeは画面出力と同時にファイルへも同時に出力するコマンドだ。
目次
teeコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ tee ファイル名
キーボードの入力内容が画面出力の他にlogdata.datに出力する場合は、次のコマンドだ。
$ tee logdata.dat
Helloとキーボードから入力した。
teeコマンドによって、画面にも入力内容が表示され、かつファイルlogdata.datにも書き込まれている。
さらにByeと入力した。
終了時はCtrl+Cのショートカットキーで終了する。
終了後、catコマンドにてファイルlogdata.datの内容を確認した。
キーボードの入力内容が画面出力の他にファイルlogdata.datに出力されたことわかる。
teeコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -a(オプション--append)
ファイルに追記する
オプション -i(オプション--ignore-interrupts)
割り込み信号を無視する
-aオプション(--appendオプション):ファイルに追記する
指定ファイルが現存している場合は、ファイルに追記する。
指定ファイルがない場合は、ファイルを新規作成する。
書式は次のとおりだ。
$ tee -a ファイル名
ファイルlogdata.datに追記する場合は、次のコマンドだ。
$ tee -a logdata.dat
catコマンドにて、-aオプションによりファイルlogdata.datに追記されていることがわかる。
-iオプション(--ignore-interruptsオプション):割り込み信号を無視する
割り込み信号を無視するオプションだ。
例えば、Ctrl+Cのショートカットキーによる終了ができなくなり、Ctrl+C自体を画面とファイルに記録する。
終了する場合は、Ctrl+Zで一度、一時停止した後、psコマンドでプロセス番号を調べてkillコマンドで終了する。
書式は次のとおりだ。
$ tee -i ファイル名
ファイルlogdata.datに追記する場合は、次のコマンドだ。
$ tee -a logdata.dat
Ctrl+Cのショートカットキーでは終了できなかったのでkillコマンドで終了している。
catコマンドにて、-aオプションによりファイルlogdata.datに追記されていることがわかる。
パイプでの利用
teeコマンドはパイプによって利用されるケースが多い。
一例として、findコマンドの実行内容を、teeコマンドを活用して画面とファイルに出力する方法を解説する。
ファイル「なんとか.dat」を探した内容を画面とファイルfind.txtの両方に出力するコマンドは、次の通りだ。
$ find *.dat | tee find.txt
findコマンドの実行内容が画面とファイルに出力されている。
パイプでの利用の場合はfindコマンドの終了と同時にteeコマンドも終了するので、Ctrl+Cのショートカットキーによる手動での終了は必要ない。
tee関連コマンド
最後にteeコマンドに関連して、基本的な標準出力のコマンド、またteeコマンドを利用する上で覚えておく必要のあるコマンドも紹介しておく
echoコマンド
画面に出力する。
psコマンド
動作しているプロセスを調べる。
killコマンド
現在動作しているプロセスを終了する。
まとめ
このページでは、teeコマンドを使った画面とファイルへの同時出力の方法を解説した。
画面でのみログを記録すれば、記録は残らない。
しかし、同時にファイルに記録すればログファイルとして管理できる。
例えば、毎朝同じ動作でプロセスの実行状況を管理する場合は、-aオプションを付けたteeコマンドで、dateコマンドとpsコマンドをパイプで実行していけば1つのファイルで管理することができるだろう。
Ctrl-Cってショートカットじゃないよ。
知識足りないのが、誤った変な記事書くなよ。
ご愛読いただきありがとうございます。
Linuxコマンド記事ですので、ここでのCtrl-Cは「コマンド入力を介さずコンソールに割り込み信号(SIGINT)を送信するキーの組み合わせ」になりますが、その役割を考えるとショートカットキーと呼んでも差し支えないように思えます。他の呼称で呼ぶとすればコンビネーションキーでしょうか。海外の技術フォーラムなどでもshortcut keyと呼称する所が多く、興味深いテーマでありながら困ってしまいますね。他に良い呼称をご存じであればご教示頂けますでしょうか。
引き続き、ご愛読のほど、よろしくお願いいたします。