Linuxサーバ

teeコマンドで標準出力とファイル出力を同時に行う

意外と便利なteeコマンド

何回かスクリプトを作成してきましたがその中でも使用していた「tee」コマンド。たとえば、処理日時をログに出力するときに

 

echo `date +%Y/%m/%d' '%H:%M:%S' ' Start' | tee -a ログファイル名

 

みたいな感じで記述しています。この場合ターミナルに

 

○○/○○/○○/ ○○:○○:○○ Start

 

と表示される(標準出力)と共に最後に記述したログファイルに同じ内容を書き込みます(ファイル出力)。

 

画面での確認と同時にファイルにも出力って意外と便利なもんなんです。

 

書き方とオプション

上の場合「-a」というオプションと「ログファイル名」というオプションを使用しています。

-aオプション

teeコマンドは後で指定するファイル名に該当するものが存在しない場合自動的に同名でファイルを作成してデータ出力してくれます。

が、既存のファイルであった場合は空のファイルを再作成した後書き込む→過去のデータに対して上書きを行うという挙動を見せます。

これだと古いデータが消えて不便だ!困る!!という場合に「-a」オプションを用いると、ファイルの最後尾に追記する形を取ってくれます。

まさにログファイルなどにうってつけ!

 

ファイル名

上でも書いたとおり、このファイル名に該当するファイルに対して書込みを行います。

存在しなければ新規作成、存在しても上書きが基本という動きになります。

 

まとめ

書かれた記事をコピペして作成しただけのスクリプトでは正直細かいことを全く気にしていませんでした。

 

が、自分の中のちょっとした疑問を追及してみると知らなかったことも見えてくるんですよね。

 

簡単なことですがこれを繰り返しているうちに知らず知らずサーバの構造を理解できればいいのですが・・・

オススメの記事

-Linuxサーバ
-, ,