連載
» 2016年03月07日 05時00分 公開

Linux基本コマンドTips(3):【 head 】コマンド/【 tail 】コマンド――長いメッセージやテキストファイルの先頭だけ/末尾だけを表示する

Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していく本連載。今回は「head」コマンドと「tail」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、長いメッセージやテキストファイルの最初の数行だけ表示する「head」コマンドと、最後の数行だけ表示する「tail」コマンドです。

headコマンド/tailコマンドとは?

 headはテキストファイルの最初の10行を、tailは最後の10行を表示するコマンドです。表示する行数は、オプションで変更することができます。

 headコマンドは「コマンド | head」のように、別のコマンドの実行結果の先頭部分を表示する際によく使われます。

headコマンドの書式

head [オプション] ファイル名

コマンド | head [オプション]

※[ ]は省略可能な引数を示しています


tailコマンドの書式

tail [オプション] ファイル名

コマンド | tail [オプション]

※[ ]は省略可能な引数を示しています



headコマンドの主なオプション

 headコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-c 数字 --bytes 数字 先頭から指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=1000*1000, M=1024*1024…)
-n 数字 --lines 数字 先頭から指定した行数のみ表示する
-q --quiet, --silent ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う)
-v --verbose 常にファイルごとのヘッダ出力を行う

・「-c」と「-n」オプションで、マイナス付きの数字にした場合、末尾の指定分を除いた全てを表示

・headコマンドのバージョンによっては「-10」のように「-数字」で行数を指定できるものもある(「head -10」「head -n 10」と同じ意味)




tailコマンドの主なオプション

 tailコマンドの主なオプションは次の通りです。

短いオプション 長いオプション 意味
-c 数字 --bytes 数字 末尾の指定したバイト数のみ表示する。「-c 5 b」のように単位を付加することも可能(b=512, KB=1000, K=1024, MB=1000*1000, M=1024*1024…)
-n 数字 --lines 数字 末尾の指定した行数のみ表示する
-q --quiet, --silent ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う)
-v --verbose 常にファイルごとのヘッダ出力を行う
-f --follow ファイルを監視して内容が追加されるたびに末尾に表示する(ログ監視などに使用する。[Ctrl]+[C]キーで終了)


headコマンドでファイルの先頭部分だけを表示する

 「リストを表示したら長くて流れて行ってしまったけれど、必要なのは先頭の数行だけだった」「CSVファイルを変換するスクリプトを作っているが、動作確認なら先頭の数行で十分だ」――そのような時に便利に使えるのがheadコマンドです。

 「head ファイル名」で、指定したファイルの先頭10行を表示します。表示が5行でよいなら「head -n 5 ファイル名」のように、オプションで行数を指定します。

 以下にheadコマンドの実行例と実行結果を示します(画面1)。

コマンド実行例

head ~/.bash_history

head -n 5 /etc/shells


画面1 画面1 「head ~/.bash_history」コマンドの実行結果。「~/.bash_history」ファイルに記述された操作履歴の先頭10行が表示される

 なお、headコマンドでの「10行」とは、改行の個数を意味します。画面の幅を超える長い行は折り返して複数行で表示されますが、この場合も1行としてカウントされるので注意してください。


パイプを使って実行結果の最初の部分だけを確認する

 「コマンドの実行結果の表示が流れて行ってしまうが、確認したいのは最初の方だけ」という場合は、「コマンド | head」のように、他のコマンドの実行結果をheadコマンドに渡します。

 以下は「dmesg」コマンドの実行結果をheadコマンドに渡す場合の例と、その実行結果になります(画面2)。dmesgコマンドでブート(起動)時に出力されるメッセージ内容を取得し、それをheadコマンドに渡して先頭の10行を表示しています。

コマンド実行例

dmesg | head


画面2 画面2 dmesgコマンドの実行結果をheadコマンドに渡して、先頭の10行を表示した結果

 実行結果全体を確認したい場合は、1画面ずつ停止しながら表示できる「moreコマンド」を使うとよいでしょう。

tailコマンドでファイルの末尾部分だけを表示する

 headコマンドとは逆に、ファイルの末尾だけ表示するのがtailコマンドです。

 ログファイルでは、基本的にファイルの末尾に新たな記録が追加されます。「more」コマンドやテキストエディタで表示しようとすると、末尾まで進むのが面倒だし、ファイルが大きい場合は読み込むのにも時間がかかります。その点、tailコマンドならば、末尾しか見ないので手軽かつ処理も高速です。

 tailコマンドも、headコマンド同様、「-n」オプションで表示する行数を指定することができます。以下にtailコマンドの実行例と実行結果を示します(画面3)。

コマンド実行例

tail ~/.bash_history

tail -n 5 /var/log/Xorg.0.log


画面3 画面3 「tail ~/.bash_history」コマンドの実行結果。「~/.bash_history」ファイルに記述された操作履歴の最後の10行が表示される

ログファイルを監視する

 tailコマンドの「-f」オプションを使うと、ログファイルのように、刻々と内容が追加されていくようなファイルを監視することができるようになります。「-f」は、ファイルなどを監視する際、内容が新たに追加されるたびに末尾に表示するオプションです。ログの監視を終了するには、[Ctrl]+[C]キーを押します。

 以下のtailコマンドは、「/var/log/messages」ファイルを監視する実行例になります(画面4)。「/var/log/messages」ファイルはシステムメッセージが記録されるファイルです。

コマンド実行例

tail -f /var/log/messages


画面4 画面4 tailコマンドで、「/var/log/messages」ファイルを監視している例。内容が追加されるたびに末尾に表示される

 なお、「/var/log/messages」ファイルはスーパーユーザーでないと表示できないため、「su」コマンドでrootユーザーになるか、または「sudo」コマンドを使って「sudo tail -f /var/log/messages」のように実行します。


「Linux基本コマンドTips」バックナンバー

筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。