はじめに

こんにちは!今回はheadコマンドについて解説します。

headはファイルの先頭行を表示するコマンドです。ログファイルの最初の内容を確認したり、大きなファイルの構造を把握したり、毎日使う超基本的なコマンドですね。

「ファイルの最初だけ見る」って感じです。tailと対になるコマンドで、どちらもよく使います。

headコマンドとは

headは、ファイルの先頭の行を表示する外部コマンドです。デフォルトでは最初の10行を表示します。

大きなファイル(ログファイルやデータファイル)の中身を確認する時に便利。全部読み込む必要がなく、サッと先頭だけ見られます。複数ファイルにも対応しており、それぞれのファイル名とともに内容が表示されます。

基本構文

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

ファイルの先頭行を表示します。デフォルトでは最初の10行が表示されます。

主なオプション

オプション 説明
-n NUM 最初のNUM行を表示(デフォルト: 10)
-n +NUM NUM行目以降を全て表示
-c NUM 最初のNUMバイトを表示
-q ファイル名ヘッダを表示しない(quiet)
-v 常にファイル名ヘッダを表示(verbose)

使用例

例1: 基本的な使い方(先頭10行)

1
head /etc/passwd

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/sys:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/usr/share/man:/usr/sbin/nologin
lp:x:7:4:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

デフォルトで最初の10行を表示します。

例2: 指定した行数を表示

1
head -n 5 /etc/passwd

実行結果:

1
2
3
4
5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

最初の5行だけを表示。-nオプションで行数を指定できます。

例3: 最初の1行だけ表示

1
head -n 1 /etc/passwd

実行結果:

1
root:x:0:0:root:/root:/bin/bash

最初の1行を表示。ヘッダ行の確認に便利。

例4: 複数ファイルを表示

1
head -n 2 file1.txt file2.txt

実行結果:

1
2
3
4
5
6
7
==> file1.txt <==
line 1 of file1
line 2 of file1

==> file2.txt <==
line 1 of file2
line 2 of file2

複数ファイルを指定すると、各ファイルのヘッダとともに先頭行が表示されます。

例5: ファイル名ヘッダを表示しない

1
head -n 3 -q file1.txt file2.txt

実行結果:

1
2
3
4
5
6
line 1 of file1
line 2 of file1
line 3 of file1
line 1 of file2
line 2 of file2
line 3 of file2

-q(quiet)オプションでファイル名ヘッダを非表示。複数ファイルをまとめて表示できます。

例6: バイト数で指定

1
head -c 50 file.txt

実行結果:

1
Lorem ipsum dolor sit amet, consectetur adipisci

行数ではなく、バイト数で指定。最初の50バイトを表示します。

例7: ログファイルの確認

1
head -n 20 /var/log/syslog

実行結果:

1
2
3
Jan  3 09:00:01 server kernel: [0.000000] Linux version 5.10.0
Jan  3 09:00:01 server kernel: [0.000000] Command line: BOOT_IMAGE=/vmlinuz
...(以下20行まで表示)

ログファイルの最初20行を確認。大容量ログの概要把握に便利。

例8: パイプで他のコマンドに渡す

1
head -n 100 largefile.txt | grep "error"

実行結果:

1
2
[ERROR] Connection failed at line 45
[ERROR] Timeout occurred at line 78

大きなファイルから先頭100行を取り出し、その中から「error」を含む行を検索。処理を軽くできます。

例9: 指定行目以降を表示(-n +N)

1
head -n +5 /etc/passwd

実行結果:

1
2
3
4
5
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

-n +5で5行目までを表示。与える行数が少ないと効果的です。

例10: csvファイルの先頭を確認

1
head -n 1 data.csv

実行結果:

1
name,age,city,email

CSVファイルのヘッダ行を確認。カラム構成を素早く把握できます。

例11: 複数ファイルをまとめて確認(-vオプション)

1
head -n 3 -v file1.txt file2.txt

実行結果:

1
2
3
4
5
6
7
8
9
==> file1.txt <==
line 1 of file1
line 2 of file1
line 3 of file1

==> file2.txt <==
line 1 of file2
line 2 of file2
line 3 of file2

-v(verbose)で常にファイル名を表示。複数ファイル比較に便利。

例12: スクリプトの先頭を確認

1
head -n 5 script.sh

実行結果:

1
2
3
4
5
#!/bin/bash
# My script description
# Created: 2026-01-03

set -e

シェルスクリプトの最初の行(shebang)とコメント部分を確認。

Tips・注意点

1行だけ取得する場合はheadを使う

1
2
3
4
5
6
7
# headで1行目取得(推奨)
head -n 1 file.txt

# sedでも可能(複雑)
sed -n '1p' file.txt

# headの方がシンプル

最初の1行だけが必要な場合はhead -n 1が最も簡単。

大きなファイルの確認にはheadが便利

1
2
3
4
5
# 10GBのログファイルでも一瞬
head -n 100 huge.log

# tailと組み合わせて先頭と末尾を確認
head -n 5 file.txt && tail -n 5 file.txt

全体を読み込まずに先頭だけ確認できるので、大容量ファイルに最適。

標準入力からも読み込める

1
2
3
4
5
# パイプで受け取ったデータの先頭を表示
cat largefile.txt | head -n 10

# 他のコマンドの出力を先頭だけ表示
ls -la | head -n 5

ファイルだけでなく、標準入力(パイプ)からも読み込めます。

バイト数指定は改行を考慮しない

1
2
# 最初の50バイト(改行で切れることもある)
head -c 50 file.txt

バイト数指定は行の途中で切れることがあります。行単位が必要なら-nを使いましょう。

実践的な使い方

ログファイルの最新エラーを確認

1
head -n 50 /var/log/application.log | grep -i "error" | tail -n 5

ログの先頭50行から最後のエラー5件を表示。問題を素早く把握できます。

大きなデータファイルの構造確認

1
head -n 1 data.csv && wc -l data.csv

CSVファイルのヘッダとレコード数を確認。データ全体の概要を把握。

ログローテーション確認

1
head -n 10 /var/log/syslog /var/log/syslog.1 /var/log/syslog.2

複数のログファイルから最新の情報を確認。ローテーション状況がわかります。

テキストファイルのエンコーディング確認

1
head -c 100 file.txt | file -

ファイルの先頭から判定。BOM(Byte Order Mark)の有無などが確認できます。

まとめ

headコマンドのポイント:

  • ファイルの先頭行を表示する基本コマンド
  • -n NUM: 最初のNUM行を表示(デフォルト: 10)
  • -c NUM: 最初のNUMバイトを表示
  • -q: ファイル名ヘッダを非表示
  • -v: ファイル名ヘッダを常に表示
  • 複数ファイル対応
  • 標準入力(パイプ)対応
  • よく使う組み合わせ: head -n 1, head -n 5 | grep, head -n + tail

ファイルの確認は日々の運用の基本。大容量ファイルでもheadを使えば一瞬で先頭が見られますよ!