2026年8月28日
2026年8月28日
headコマンドでファイル先頭を表示する方法
はじめに
headはファイルの先頭部分を表示するコマンドで、tailの対になる存在です。大きなログファイルやCSVの構造を素早く確認したり、パイプの先頭でデータを絞り込んだりする際に重宝します。
シンプルですが、サーバー運用では「先頭だけ確認すれば十分」という場面が非常に多く、cat より head を使うべきケースが頻出します。
症状・背景
head が必要になる主な場面:
- CSVやログファイルの構造(ヘッダー、フォーマット)を素早く確認したい
- 巨大なファイルを誤ってcatして端末を固めるのを避けたい
- パイプ処理で上位N件だけを取り出したい(sort + head の組み合わせ)
- 設定ファイルの冒頭にあるバージョン情報やコメントだけを確認したい
手順・設定方法
ステップ1: 基本的な使い方
# 先頭10行を表示(デフォルト)
head /var/log/syslog
# 行数を指定(-n N または -N)
head -n 5 /etc/passwd
head -5 /etc/passwd
# 複数ファイルの先頭を表示(ヘッダー付き)
head /var/log/messages /var/log/syslog
ステップ2: 行数・バイト数の制御
# 末尾を除いて先頭から表示(負の値)
head -n -5 file.txt # 末尾5行を除いた全行
# バイト数指定
head -c 100 binary.dat # 先頭100バイト
head -c 1K file.txt # 1キロバイト
head -c 1M file.bin # 1メガバイト
# ヘッダー(ファイル名)を抑制
head -q file1.txt file2.txt
ステップ3: パイプとの組み合わせ
# アクセスログのIP上位10件
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
# メモリ使用量上位5プロセス
ps aux --sort=-%mem | head -6 # ヘッダー1行+5プロセス
# ディスク使用量上位10ディレクトリ
du -sh /var/* 2>/dev/null | sort -rh | head -10
# 直近のログイン情報
last | head -20
ステップ4: 実践的な使い方
# CSVのヘッダーと最初の数行だけ確認
head -3 large_dataset.csv | column -t -s,
# テスト用にサンプルデータを生成
head -1000 huge.log > sample.log
# JSONファイルの構造プレビュー
head -50 api_response.json | jq .
# headとtailを組み合わせて特定範囲を抽出(10〜20行目)
head -n 20 file.txt | tail -n 11
# CPU情報の最初のコアだけ表示
head -25 /proc/cpuinfo
注意事項
- head と tail を組み合わせる場合、行数の計算ミスでオフバイワンエラーになりやすい(
tail -n +10 | head -n 11が10〜20行目) - バイト指定
-cでマルチバイト文字を途中で切ると文字化けする - ストリーミング処理の場合、
head -n Nで指定行に達するとパイプ元プロセスがSIGPIPEで終了することがある(意図した挙動) - 巨大ファイルでも
headは先頭しか読まないため高速
まとめ
1. 基本表示: head ファイル で先頭10行を表示
2. 行数指定: -n N で先頭N行、-n -N で末尾を除いた全行
3. バイト指定: -c N でNバイト分のみ表示(K/M単位も可)
4. 複数ファイル: 引数に並べると各ファイル先頭をヘッダー付きで表示
5. パイプ連携: sort | head で上位N件抽出が定番
関連記事: