Linuxを使っていて、こんなことはありませんか?
- 「大きなログファイルの最初の方だけ確認したい」
- 「CSVファイルのヘッダー行だけを見たい」
- 「巨大なファイルを開く前に、どんな内容か知りたい」
- 「ファイル全体を読み込むと重いので、一部だけチェックしたい」
そんなときに便利なのが、headコマンドです。
headコマンドの特徴
- シンプル:ファイルの先頭から指定行数を表示
- 高速:ファイル全体を読まずに済む
- 軽量:システムリソースをほとんど使わない
- 標準装備:ほとんどのLinuxに最初から入っている
この記事では、headコマンドの基本的な使い方から実用的な活用例まで、初心者にもわかりやすく説明します。
headコマンドとは?

何をするコマンド?
headは、ファイルの先頭部分だけを表示するLinuxの標準コマンドです。
基本の動作
- デフォルトで先頭10行を表示
- 行数やバイト数を指定可能
- 複数ファイルの処理も可能
- パイプラインでの使用も可能
基本的な使い方
最もシンプルな使い方
head ファイル名
例
head /etc/passwd
実行結果(例)
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:/dev:/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:/var/cache/man:/usr/sbin/nologin
lp:x:7:7: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行が表示されます。
主要なオプション
行数を指定:-n
説明 表示したい行数を指定できます。
基本の書き方
head -n 行数 ファイル名
例1:先頭5行だけ表示
head -n 5 /etc/passwd
実行結果
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:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
例2:先頭1行だけ表示(ヘッダー確認)
head -n 1 data.csv
省略記法
# これらは同じ意味
head -n 5 file.txt
head -5 file.txt
バイト数で指定:-c
説明 行数ではなく、バイト数で表示範囲を指定できます。
基本の書き方
head -c バイト数 ファイル名
例1:先頭20バイトを表示
head -c 20 /etc/passwd
実行結果
root:x:0:0:root:/ro
例2:先頭100バイトを表示
head -c 100 large_file.txt
使い分け
-n
:行単位で見たい(通常はこちら)-c
:バイナリファイルや文字数制限がある場合
複数ファイルの処理
説明 一度に複数のファイルの先頭を確認できます。
例
head -n 3 file1.txt file2.txt file3.txt
実行結果(例)
==> 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
==> file3.txt <==
Line 1 of file3
Line 2 of file3
Line 3 of file3
ファイル名を非表示にする
head -n 3 -q file1.txt file2.txt
パイプラインでの活用
他のコマンドとの組み合わせ
例1:lsの結果の先頭5つだけ表示
ls -la | head -n 5
例2:プロセス一覧の先頭10個
ps aux | head -n 10
例3:ログファイルの最新部分の先頭
tail -n 100 /var/log/syslog | head -n 10
grepとの組み合わせ
例:エラーを含む行の最初の5行
grep "ERROR" logfile.txt | head -n 5
例:特定ユーザーの最初の3つのプロセス
ps aux | grep username | head -n 3
実際に使える例
ログファイルの確認
システムログの冒頭確認
head /var/log/syslog
Apacheアクセスログの冒頭
head /var/log/apache2/access.log
エラーログの最初の20行
head -n 20 /var/log/apache2/error.log
CSVファイルの構造確認
ヘッダー行だけを確認
head -n 1 sales_data.csv
実行結果(例)
Date,Product,Quantity,Price,Total
データの最初の5行を確認
head -n 5 sales_data.csv
実行結果(例)
Date,Product,Quantity,Price,Total
2024-01-01,Product A,10,100,1000
2024-01-01,Product B,5,200,1000
2024-01-02,Product A,8,100,800
2024-01-02,Product C,3,300,900
設定ファイルの確認
Nginx設定の冒頭
head /etc/nginx/nginx.conf
SSH設定の冒頭
head /etc/ssh/sshd_config
環境変数の確認
env | head -n 10
大容量ファイルの事前確認
巨大なファイルを開く前の下見
# ファイルサイズを確認
ls -lh huge_file.txt
# 先頭だけ確認
head huge_file.txt
# 文字コードも確認
head huge_file.txt | file -
スクリプトでの活用

データ処理の前処理
サンプルデータの作成
#!/bin/bash
# 大きなデータファイルから100行のサンプルを作成
head -n 100 big_data.txt > sample_data.txt
echo "サンプルファイルを作成しました"
CSVファイルの検証
#!/bin/bash
csv_file="$1"
echo "=== ファイル情報 ==="
ls -lh "$csv_file"
echo "=== ヘッダー行 ==="
head -n 1 "$csv_file"
echo "=== データの最初の5行 ==="
head -n 6 "$csv_file" | tail -n 5
ログ監視スクリプト
エラーの早期発見
#!/bin/bash
log_file="/var/log/application.log"
# 最新の100行から、最初のエラーを確認
tail -n 100 "$log_file" | grep -i error | head -n 1
コマンドの組み合わせパターン
よく使う組み合わせ
ファイルの概要把握
# ファイル情報 + 先頭 + 末尾
ls -lh file.txt && head -n 5 file.txt && echo "..." && tail -n 5 file.txt
検索結果の上位確認
# 特定パターンの最初の10件
grep "pattern" *.txt | head -n 10
ソート後の上位表示
# ファイルサイズの大きい順に上位5つ
ls -lS | head -n 6
数値データの処理
CSVファイルの統計(上位)
# 売上の上位5位
sort -t, -k5 -nr sales.csv | head -n 6
プロセスのCPU使用率上位
ps aux --sort=-%cpu | head -n 10
トラブルシューティング
ファイルが見つからない
エラーメッセージ
head: cannot open 'filename.txt' for reading: No such file or directory
対処法
# ファイルの存在確認
ls -la filename.txt
# パスが正しいか確認
pwd
ls -la
権限がない
エラーメッセージ
head: cannot open 'filename.txt' for reading: Permission denied
対処法
# ファイルの権限確認
ls -la filename.txt
# 読み取り権限を追加
chmod +r filename.txt
# sudoで実行
sudo head filename.txt
文字化けする
問題 日本語ファイルが文字化けして表示される
対処法
# 文字コードを確認
file filename.txt
# 適切な文字コードで表示
iconv -f shift_jis -t utf-8 filename.txt | head
# 環境変数を設定
export LANG=ja_JP.UTF-8
head filename.txt
バイナリファイルを表示してしまった
問題 バイナリファイルをheadで開いて、ターミナルが文字化け
対処法
# ターミナルをリセット
reset
# または
tput reset
# 事前にファイル形式を確認する習慣を
file filename
関連コマンドとの使い分け

head vs tail
コマンド | 表示範囲 | 使用場面 |
---|---|---|
head | ファイルの先頭 | 構造確認、冒頭チェック |
tail | ファイルの末尾 | ログの最新状況確認 |
例
# ログの開始時刻を確認
head -n 1 /var/log/syslog
# ログの最新状況を確認
tail -n 10 /var/log/syslog
head vs less/more
コマンド | 特徴 | 使用場面 |
---|---|---|
head | 指定行だけ表示して終了 | 一部だけ確認 |
less | 全体をページ送りで表示 | 全体を詳しく確認 |
例
# 概要だけ確認
head config.txt
# 詳細に確認
less config.txt
head vs cat
コマンド | 表示範囲 | 使用場面 |
---|---|---|
head | 先頭の指定行のみ | 大きなファイルの概要確認 |
cat | ファイル全体 | 小さなファイルの全体表示 |
高度な使い方
条件付きhead
ファイルサイズに応じた表示
#!/bin/bash
file="$1"
size=$(wc -l < "$file")
if [ $size -gt 1000 ]; then
echo "大きなファイルです。先頭20行を表示:"
head -n 20 "$file"
else
echo "小さなファイルです。全体を表示:"
cat "$file"
fi
除外パターンとの組み合わせ
コメント行を除いた先頭5行
grep -v '^#' config.txt | head -n 5
空行を除いた先頭10行
grep -v '^$' file.txt | head -n 10
複数条件での絞り込み
特定パターンの最初の出現
grep "ERROR" logfile.txt | head -n 1
最新の設定変更の履歴
grep "config" /var/log/syslog | tail -n 100 | head -n 10
パフォーマンスの考慮
大容量ファイルでの注意
効率的な確認方法
# ❌ 非効率:全体を読んでから先頭を表示
cat huge_file.txt | head -n 10
# ✅ 効率的:最初から10行だけ読む
head -n 10 huge_file.txt
メモリ使用量の比較
head
:指定行数分のメモリのみ使用cat | head
:ファイル全体をメモリに読み込み
ネットワーク越しのファイル
リモートファイルの確認
# SSH経由での確認
ssh user@server 'head /path/to/logfile'
# ダウンロード前の確認
curl -s http://example.com/data.txt | head -n 5
まとめ
headコマンドの基本パターン
やりたいこと | コマンド |
---|---|
先頭10行表示(デフォルト) | head file.txt |
先頭5行表示 | head -n 5 file.txt |
先頭100バイト表示 | head -c 100 file.txt |
CSVヘッダー確認 | head -n 1 data.csv |
複数ファイル確認 | head -n 3 *.txt |
パイプとの組み合わせ | `ls -la |
覚えておくべきポイント
基本操作
- デフォルトは先頭10行
-n
で行数指定、-c
でバイト数指定- 複数ファイルの同時処理が可能
実用的な活用
- ログファイルの冒頭確認
- CSVファイルの構造把握
- 大容量ファイルの事前チェック
他コマンドとの組み合わせ
tail
と組み合わせて中間部分を表示grep
と組み合わせて条件付き表示- パイプラインで柔軟な処理
コメント