【Linuxコマンド】head コマンドの使い方とよく使うオプション

概要

 
head コマンドは、指定したファイルや標準入力の先頭部分を表示するコマンドです。
デフォルトでは、各ファイルの先頭 10 行を表示します。
 

ログファイルや設定ファイルの中身をざっと確認したいときに、いきなり全体を開かず、
とりあえず「先頭だけ確認する」用途でよく使われます。
tail コマンド(末尾を見るコマンド)とセットで覚えておくと便利です。
 

フォーマット

 

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

 

ファイル名を指定しない場合や - を指定した場合は、標準入力から読み込んだデータの先頭部分を表示します。
行数を指定する -n や、バイト数を指定する -c などを組み合わせて使うことが多いです。

 

よく使うコマンド例

 

・ファイルの先頭 10 行を表示する(デフォルト動作)。

head /var/log/messages

オプションを付けずに head を実行すると、指定したファイルの先頭 10 行を表示します。
ログファイルや長い設定ファイルをざっと確認したいときの基本的な使い方です。

 

・先頭 20 行だけを表示する。

head -n 20 /var/log/messages

-n 行数 で表示する行数を指定できます。
この例では、messages の先頭 20 行だけを表示しています。
短縮形として head -20 /var/log/messages と書くこともできます。

 

・ファイルの先頭 100 バイトだけを表示する。

head -c 100 sample.bin

-c バイト数 は、行単位ではなくバイト数で先頭部分を表示するオプションです。
バイナリファイルや、1 行が非常に長いテキストの先頭部分だけをざっと確認したいときに使えます。

 

・標準入力の先頭部分だけを確認する。

dmesg | head

パイプ(|)と組み合わせることで、他のコマンドの出力のうち先頭の一部だけを確認できます。
dmesg のように出力量が多いコマンドと組み合わせると、画面が流れすぎるのを防げます。

 

・複数ファイルの先頭部分をまとめて確認する。

head -n 5 file1.log file2.log

複数のファイルを指定した場合、それぞれのファイルごとに「先頭 5 行」が表示されます。
デフォルトの GNU head では、各ファイルの前に ==> ファイル名 <== のようなヘッダが付いて区別されます。

 

・ヘッダ表示を抑制して、ファイル名を表示しない。

head -q file1.log file2.log

-q(–quiet / –silent)は、複数ファイルを指定したときに表示されるファイル名のヘッダを抑制します。
2 つのログファイルの先頭部分を「ひと続きのログ」としてざっと眺めたいときに使えます。

 

・ログの先頭と末尾だけをざっくり確認する。

head -n 20 /var/log/messages
tail -n 20 /var/log/messages

障害調査などで、ログの「最初に何が書かれているか」と「最近の状況」を知りたいとき、
headtail を組み合わせるのが定番です。
どちらも -n で表示行数を調整できます。

 

・巨大なファイルが本当にテキストかどうか軽く確認する。

head -c 200 bigfile | hexdump -C

大きなファイルがテキストなのかバイナリなのかを確認したい場合、
先頭 200 バイトだけを head -c で取り出し、hexdump などで表示する方法もあります。
ファイルを丸ごと開かず、先頭だけ見たいときに便利な組み合わせです。

 




実務でのよくある使いどころ

 

・ログローテーション直後の内容確認
新しく生成されたログファイルが意図通りに出力されているか、
head /var/log/xxx.log で先頭数十行だけ確認する、という使い方はよくあります。
 

・設定ファイルのヘッダ確認
長い設定ファイルの冒頭には、コメントで説明や include 設定が書かれていることが多いため、
head -n 30 設定ファイル で最初の方だけ読む、というパターンもよく登場します。
 

・大量出力コマンドの「ざっくりプレビュー」
ps auxnetstat / ss / journalctl のように出力量が多いコマンドに対して、
一旦 | head して様子を見る、というのは日常的なテクニックです。
 

・スクリプト内での安全確認
バッチ処理の途中で生成されたファイルの先頭数行だけログに出力しておき、
想定通りの形式で書き出されているか確認する、といった用途でも head が使われます。
 

head は「先頭だけを見るための軽量ビューア」のようなイメージで、
taillesssed -n '1,10p' などと組み合わせながら使い分けると便利です。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-n--lines表示する行数を指定する(デフォルトは 10 行)
-c--bytes表示するサイズをバイト数で指定する(行ではなくバイト単位で先頭部分を表示)
-q--quiet複数ファイルを指定したときにファイル名のヘッダを表示しない
-v--verbose単一ファイルでも常にファイル名のヘッダを表示する
-z--zero-terminated行の区切り文字として改行ではなく NUL 文字を使用する(特殊用途向け)
--helphead コマンドの使い方(ヘルプ)を表示して終了する
--versionhead コマンドのバージョン情報を表示して終了する
 

ここでは、GNU coreutils ベースの head コマンドで一般的によく使われるオプションを TablePress の表としてまとめている想定です。
実際に利用可能なオプションや挙動は、ディストリビューションやバージョンによって異なる場合があるため、
本番環境で使用する前に man head で最新の仕様を確認することをおすすめします。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村