【linuxコマンド基礎】意外と便利!teeコマンドの使い方

こんにちは。今回も基礎的なlinuxコマンドの使い方を解説していきます。今回取り上げるのはteeコマンドです。このコマンドは単体で使用することはできないので、勉強したときは使い方がイマイチよくわかりませんでした。しかし、様々なコマンドと組み合わせて使うと便利なコマンドであることが後々わかってきたので、今では結構な頻度で使用しています。今回はteeの使い方がわからない人向けに基本的な使い方を説明します。

teeコマンドとは

コマンドを実行して、結果をファイルに保存したいし、画面に結果を出して確認もしたい。そう思ったことはありませんか?そんな時に役立つのがteeコマンドです。teeコマンドは受け取った値を「標準出力に出す。」「ファイルにリダイレクトする。」を同時に行ってくれるコマンドです。例えば、ファイルに何かを書き出した時、ちゃんと書き出されているか確認しますよね?確認するとき、cat、less、vimなどのコマンドを再度入力しなければなりません。正直面倒くさい。そんなときはこのteeコマンドの出番です。ファイルに書き出すと同時に標準出力にも表示してくれる。確認作業が地味に便利になる。そんなコマンドです。

teeコマンドの名前の由来

teeの名前の由来はアルファベットのTです。ではなぜTなのか。まずはteeの挙動を視覚的に表した以下の図を御覧ください。

入力-----------------コマンド -----------------> ファイル (リダイレクト)
          |
          |
          |
            ↓
        標準出力(ディスプレイ)

入力した情報が標準出力とファイルリダイレクトに分かれていますよね。この構図がアルファベットのTに似ていることからteeと名付けられました。この由来がわからないと中々頭に入ってこないコマンド名ですが、わかってしまえば納得ですね。

teeコマンドの使い方

簡単な例と共にteeコマンドの基本的な使い方を解説します。echoで"foo"という文字列を、teeを使って標準出力と “result"ファイルに出力してみます。

まずは、teeを使わずにresultファイルにリダイレクトし、resultの内容を確認してみます。

$echo foo > result
$cat result
foo

resultにfooと出力されたことがわかりました。次にteeを使用してresultとfooどちらにも出力してみましょう。

$echo bar | tee result
bar
$cat result
bar

いかがでしょうか。結果が即時shellに出力され、resultにも出力されている事がわかりました。以上が基本的な使い方です。それでは次にteeはどんな時に使うと便利なのかを説明していきます。

teeの使いどころ

機能の開発中。結果を確認しながら進めたい時

私がteeを使う時は大抵この使い方です。あるファイルにリダイレクトするスクリプトを作っている時、出力した内容が正しいかどうか確認しながら進めます。そんな時にいちいちcatやlessで中身を確認するのは結構ストレスになります。そこでteeを使用してファイル出力内容を同時に画面で見ることができるようにしています。開発時のストレスを緩和できて生産性も上がります。

ワンライナーのコマンドをデバッグをする時

パイプでコマンドをつなげてワンライナーで処理する時、teeを使えば途中の状態をファイルに出力して見ることができます。 例えば以下のようなコマンドがあったとします。

コマンドA | コマンドB | コマンドC | コマンドD > result

コマンドCが出力している内容をc_resultというファイルに出力して閲覧したい時は以下のようにします。

コマンドA | コマンドB | コマンドC | tee c_result  | コマンドD > result

こうすることでコマンドCの出力は標準出力とc_resultの両方に出力されることになります。コマンドに不具合がある場合、不具合を出しているコマンドを特定するためにteeを使うことができます。

まとめ

今回はteeコマンドの使い方を説明しました。私は初めて勉強した時にこのteeコマンドの使い所がよくわかりませんでした。そういう方も結構多いのではないかと思い、この記事を執筆しました。teeは本記事で紹介した使い方以外にもまだ、多くの利用用途があります。興味を持たれた方は是非調べて使ってみてください。

Linux

Posted by kobainmac