Tail

tail（テール）はUNIXおよびUnix系のシステムで、テキストファイルやパイプ上のデータの末尾から数行を表示するプログラムである。Coreutils の一部。

文法 
このコマンドの文法は以下の通り。

 tail [options] <file_name>

デフォルトでは、tailは入力の末尾10行を標準出力に表示する。表示すべき行数はコマンド行オプションで指定でき、表示単位（行、ブロック、バイトなど）も変更できる。以下の例では、filenameの末尾20行を表示する。

 tail -n 20 filename

次の例では、名前がfoo*で始まる全てのファイルの末尾15バイトを表示する。

 tail -c 15 foo*

次の例では、filenameの先頭から2行目以降を全て表示する。

 tail -n +2 filename

古い文法では（Solarisなど）、filenameの末尾20行の表示や末尾50バイトの表示は次のように記される。

 tail -20 filename
 tail -50c filename

しかし、この構文は既に古く、POSIX 1003.1-2001に準拠していない。現在のバージョンでこの構文がサポートされているとしても、他のオプション（たとえば後述の -f）とともに指定することはできない。

ファイル監視 
tailには特殊なコマンド行オプション -f (follow) があり、ファイルの監視ができる。末尾数行を表示して終了するのではなく、表示後もファイルの監視を続ける。他のプロセスの処理によって新たな行がそのファイルに追加されると、tail は表示を更新する。これは特にログファイルを監視するのに便利である。以下のコマンドはmessagesの最後尾10行を表示後、messagesに新たな行が追加される度にそれを表示する。

 tail -f /var/adm/messages

監視中のtailを停止させるには、CTRL-Cを押下する。このコマンドは&を付けてバックグラウンドで実行することもできる（ジョブコントロール）。

また、類似オプションとして-F (follow) が設けられているものも存在する。-fはコマンド起動時に開いたファイルを監視するが、-Fは開いたファイルのinodeを監視し、inode番号の変化を検出すると、ファイルを開き直す。以下のコマンドは前例同様messagesの最後尾10行を表示後、messagesに新たな行が追加される度にそれを表示する。

 tail -F /var/adm/messages

前者との違いは、/var/adm/messagesがローテートされると、前者ではローテートに伴う移動先のファイル（例えばmessages.1など）を監視しつづけるのに対し、後者では/var/adm/messagesを監視しつづける点である。

類似のプログラム 
 CCZE - tailに似ているが、表示がカラーになっている。
 pctail - CCZEに似た、Pythonで書かれた色つきTail。
 root-tail - X Window Systemのルートウィンドウに出力を表示する。
 Inotail - 本来の tail は新たな表示すべきデータがあるかどうかを毎秒チェックする。InotailはLinuxカーネルにあるinotifyインタフェースを使うので、本当に何らかの新たなデータがあるときだけチェックする。
 MultiTail - ログファイルをカラーで表示するだけでなく、マージ、フィルター、スクロールバック、サブウィンドウへの分割などが可能。tail、sed、watch、CCZE/pctail、grep、diff、Beeperなどの組合せである。

関連項目 
head

外部リンク 
 tail (1) マニュアル JM Project
 FreeBSD documentation for tail（英語）
 tail(1) man page（SunOS リファレンスマニュアル）
 tail(1) man page（HP-UX リファレンス）

UNIXのソフトウェア