【初心者向け】Linuxのheadコマンド完全ガイド

Linux

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と組み合わせて条件付き表示
  • パイプラインで柔軟な処理

コメント

タイトルとURLをコピーしました