headコマンド

ファイルの先頭部分を表示します。

概要

headコマンドはファイルの先頭部分を標準出力に出力します。デフォルトでは、指定された各ファイルの最初の10行を表示します。複数のファイルが指定された場合、各ファイルの前にファイル名を識別するヘッダーが付きます。

オプション

-n, --lines=N

デフォルトの10行ではなく、最初のN行を表示します

$ head -n 5 file.txt
Line 1
Line 2
Line 3
Line 4
Line 5

-c, --bytes=N

各ファイルの最初のNバイトを表示します

$ head -c 20 file.txt
This is the first 20

-q, --quiet, --silent

ファイル名を示すヘッダーを表示しません

$ head -q file1.txt file2.txt
(file1.txtの内容)
(file2.txtの内容)

-v, --verbose

常にファイル名を示すヘッダーを表示します

$ head -v file.txt
==> file.txt <==
Line 1
Line 2
...

使用例

ログファイルの先頭を表示する

$ head /var/log/syslog
May  5 10:15:01 hostname CRON[12345]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
May  5 10:17:01 hostname CRON[12346]: (root) CMD (/usr/local/bin/backup.sh)
...

複数ファイルの先頭数行を表示する

$ head -n 3 *.conf
==> apache.conf <==
# Apache configuration
ServerName localhost
Listen 80

==> nginx.conf <==
# Nginx configuration
worker_processes auto;
events {

パイプとheadを組み合わせる

$ ps aux | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 168940  9416 ?        Ss   May04   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    May04   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   May04   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   May04   0:00 [rcu_par_gp]

ヒント:

tailと組み合わせる

headtailを組み合わせて特定の行範囲を抽出できます:

$ head -n 20 file.txt | tail -n 10

これはファイルの11〜20行目を表示します。

負の数を使用する

GNU headでは、-n -Nを使用して最後のN行を除くすべての行を表示できます:

$ head -n -5 file.txt

これは最後の5行を除くすべての行を表示します。

成長するファイルの監視

tail -fとは異なり、headにはフォローモードがありません。アクティブに書き込まれているファイルを監視する必要がある場合は、-fオプション付きのtailを使用してください。

よくある質問

Q1. headとtailの違いは何ですか?

A. headはファイルの先頭(デフォルトでは最初の10行)を表示し、tailはファイルの末尾(デフォルトでは最後の10行)を表示します。

Q2. 行数ではなく特定の文字数を表示するにはどうすればよいですか?

A. -cオプションを使用します:head -c 100 file.txtはファイルの最初の100バイトを表示します。

Q3. ファイル名のヘッダーなしで複数ファイルの先頭数行を表示するにはどうすればよいですか?

A. -qオプションを使用します:head -q file1.txt file2.txt

Q4. headはtail -fのようにファイルの成長に合わせて追跡できますか?

A. いいえ、headにはフォローモードがありません。成長するファイルを監視するにはtail -fを使用してください。

参考文献

https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.html

改訂履歴