タイトル: head ファイルの先頭部分を表示
SEOタイトル: Linuxのheadコマンドの使い方|ファイル先頭の表示と行数・バイト指定
headは、Linuxでファイルの先頭部分(既定では先頭10行)を表示するコマンドです。ファイル全体を開かずに冒頭だけを素早く確認したいときや、パイプでつないで大きな出力の先頭だけを取り出したいときに使います。
| この記事の要点 |
|---|
|
headコマンドとは
headは、指定したファイルの先頭部分を標準出力に表示するコマンドです。オプションを付けない場合は先頭から10行が表示されます。ファイル全体を読み込むのではなく冒頭だけを取り出すため、設定ファイルの書き出しやログの最初の数行、CSVのヘッダー行などを手早く確認する用途に向いています。
名前のとおり「先頭(head)」を扱うコマンドで、「末尾(tail)」を表示する tail コマンドと対になっています。複数のファイルをまとめて指定したり、パイプを通じて他コマンドの出力を受け取ったりと、組み合わせの幅が広い点も特徴です。
基本的な使い方
もっとも単純な使い方は、ファイル名を1つ指定する形です。これで先頭10行が表示されます。
|
head sample.txt |
表示する行数を変えたい場合は -n オプションに行数を渡します。次の例は先頭から5行だけを表示します。
|
head -n 5 sample.txt |
多くの環境では、-n 5 の代わりに -5 のように行数を直接書く短縮形も使えます。ただしこの短縮形は環境によって扱いが異なる場合があるため、スクリプトなど確実性を求める場面では -n 5 の形を使うほうが無難です。
主要なオプション
よく使うオプションを以下にまとめます。
| オプション | 意味 | 使用例 |
|---|---|---|
-n 行数 |
先頭から指定した行数を表示する。 | head -n 20 access.log |
-c バイト数 |
行ではなく先頭から指定したバイト数を表示する。 | head -c 100 data.bin |
-n -数 |
末尾の指定行を除いた、残りの先頭部分を表示する。 | head -n -5 sample.txt |
-q |
複数ファイル指定時に、ファイル名の見出しを表示しない。 | head -q a.txt b.txt |
-v |
ファイルが1つでも、常にファイル名の見出しを表示する。 | head -v sample.txt |
バイト数や行数の指定では、環境によって 1K(キロバイト)や 1M(メガバイト)といった単位付きの指定に対応している場合があります。利用できる単位は環境に依存するため、必要に応じてヘルプ(head --help)で確認してください。
複数ファイルをまとめて表示する
ファイルを複数指定すると、それぞれの先頭部分が「==> ファイル名 <==」という見出し付きで順番に表示されます。複数のログの冒頭を一度に見比べたいときに便利です。
|
head -n 3 app1.log app2.log |
末尾以外を表示する(-n -数)
-n に負の数を渡すと、「末尾の指定行を除いた残り全体」を表示します。たとえば末尾の集計行や空行を取り除いて本文だけを見たい場合に使えます。次の例は、ファイル末尾の5行を除いた残りをすべて表示します。
|
head -n -5 sample.txt |
なお、この負の数指定はGNU版のheadで利用できる機能です。一部の環境(最小構成のシステムなど)では対応していないことがあるため、移植性が重要な場合は注意してください。
tailとの対比
headがファイルの先頭を扱うのに対し、tailはファイルの末尾を扱います。どちらもオプションの体系がよく似ており、見たい場所が「冒頭」か「末尾」かで使い分けます。
| 項目 | head | tail |
|---|---|---|
| 表示する位置 | ファイルの先頭 | ファイルの末尾 |
| 行数指定の例 | head -n 10 file |
tail -n 10 file |
| 代表的な用途 | ヘッダー行や冒頭の確認 | 最新ログの確認、追記の追従 |
| 追従表示 | 非対応 | -f で追記を継続表示できる |
ログの「最新の動き」を見たいときは tail、ファイルの「冒頭の書式やヘッダー」を見たいときは head、と覚えておくと選びやすくなります。
パイプとの組み合わせ
headは、他コマンドの出力をパイプ | で受け取って、その先頭だけを表示する用途でもよく使われます。出力が大量になるコマンドでも、先頭だけを確認すれば全体の傾向や書式を把握できます。
たとえば、カレントディレクトリの一覧の先頭5件だけを表示します。
|
ls -l | head -n 5 |
次は、プロセス一覧の見出しと先頭の数行だけを確認する例です。大量の出力を画面に流さずに、必要な冒頭部分だけを取り出せます。
|
ps aux | head -n 10 |
並べ替えと組み合わせれば、「上位N件」を取り出す定番の使い方になります。次はディスク使用量を大きい順に並べ、上位5件を表示する例です。
|
du -sh * | sort -rh | head -n 5 |
実用的な使用例
ログファイルの先頭を確認して、いつから記録が始まっているかや冒頭の書式を把握します。
|
head -n 20 /var/log/syslog |
CSVファイルのヘッダー行とサンプル数行だけを見て、列の構成を確認します。
|
head -n 5 data.csv |
ファイルの先頭から決まったバイト数だけを取り出したいときは -c を使います。次はファイル冒頭の512バイトを取り出す例です。
|
head -c 512 sample.dat |
落とし穴・注意点
| 注意点 | 内容 |
|---|---|
-n 0 は何も表示されない |
行数に0を指定すると、表示行数が0になるため出力は空になります。意図せず空表示になった場合は行数の指定を見直してください。 |
| バイナリファイルの表示崩れ | バイナリファイルをそのまま head で表示すると、制御文字によって端末の表示が崩れることがあります。中身を確認したい場合は -c でバイト数を絞り、od や xxd など専用コマンドの利用を検討してください。 |
| パイプ時のSIGPIPE | パイプの出力側で head が必要な行数を読み終えると、headは入力を閉じます。すると上流コマンドの書き込み先がなくなり、SIGPIPE シグナルによって上流が途中で終了します。これは正常な動作ですが、上流コマンドのエラーや警告として見える場合があります。 |
| 行数の短縮指定の互換性 | head -5 のような短縮形や -n -数 の負数指定は環境によって対応状況が異なります。確実性を重視する場面では head -n 5 のような明示的な形を使うのが安全です。 |
よくある質問(FAQ)
Q. オプションを付けないと何行表示されますか?
A. 既定では先頭10行が表示されます。行数を変えたい場合は -n で指定してください。
Q. 行ではなく文字数(バイト数)で先頭を取り出せますか?
A. -c オプションを使うとバイト数で指定できます。たとえば head -c 100 file で先頭100バイトを表示します。なお日本語などのマルチバイト文字では、バイト数の途中で文字が切れて表示が崩れる場合がある点に注意してください。
Q. ファイルの末尾を見たいときはどうしますか?
A. 末尾を表示するには tail コマンドを使います。head と tail はオプション体系が似ているため、見たい位置に応じて使い分けると覚えやすくなります。
Q. headとgrepなどを組み合わせて先頭だけ絞り込めますか?
A. できます。grep パターン file | head -n 5 のようにパイプでつなぐと、検索結果の先頭5件だけを表示できます。大量にヒットする検索の最初の数件を確認したいときに便利です。