エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する

   

Linuxの head、tailコマンドの解説

 

head、tailはそれぞれ先頭行から、最終行から指定した表を表示する

 
Linuxのファイルのテキストを操作するコマンドの紹介として、今回は「head」コマンドと「tail」コマンドを紹介します。
 
 
head:ファイルの最初の 10行のテキストを表示する
tail:ファイルの最後の 10行のテキストを表示する
 
「head」コマンドはテキストファイルの最初の 10行、「tail」コマンドは最後の 10行を表示すると言う機能を持つコマンドです。
 
ログファイルなど容量が大きなテキストファイルの最初の 10行、最後の 10行などを表示して、ファイルの内容を確認するときなどに使用します。
 
 
また、「head」も「tail」も何かの略ではなく、そのままの単語ですので、理解しやすいコマンドでしょう。
 
 

ファイルの内容の先頭から指定された行数分を表示する「head」コマンド

 
「head」コマンドは、ファイルの先頭から指定した行数分の内容を表示します。
指定しない場合は 10行がデフォルトの設定となっています。
 
 

headコマンドの基本的な使用例

 
「head」コマンドの基本的な使用例としては以下のようになります。
デフォルトの設定は 10行表示する設定になっていますので、オプションを設定しない場合は、先頭から 10行を表示します。
 

 
 
また、表示する行数を指定する場合は、下記の様に「-n 行数」のオプションか、「-行数」のオプションを設定します。
以下は、デフォルトと同じ 10行を表示する指定です。
 

 
上記の 2つの記述は同じ表示結果になりますが、「head -n 10」の記述方法をオススメします。
理由は、「head -10」の記述方法は非推奨であるためです。
 
 

ファイルの内容の最後の行から指定された行数分を表示する「tail」コマンド

 
「tail」コマンドは、ファイルの末尾から指定した行数分の内容を表示します。
tailも headコマンドと同じく、指定しない場合は 10行がデフォルト設定となっています。
 
 

tailコマンドの基本的な使用例

 
「tail」コマンドの基本的な使用例としては以下のようになります
デフォルトの設定は 10行表示する設定になっていますので、オプションを設定しない場合は、最終行から 10行を表示します。
 

 
 
また、表示する行数を指定する場合は、下記の様に「-n 行数」のオプションか、「-行数」のオプションを設定します。
以下は、デフォルトと同じ 10行を表示する指定です。
 

 
「head」コマンドと同じく、上記の 2つの記述は同じ表示結果になりますが、「tail -n 10」の記述方法をオススメします。
 
 

head、tailコマンドの主なオプション

 
headコマンドの主なオプションは以下の通りとなっています。
 

オプション 説明
-c、–bytes 数値 先頭から指定したバイト数を表示する
-n、–lines 数値 先頭行から指定した行数を表示する
-q、–quiet、–silent ファイルごとのヘッダ表示を行わない
-v、–verbose ファイルごとのヘッダ表示を常に行う

 
 
tailコマンドの主なオプションは以下の通りとなっています。
 

オプション 説明
-c、–bytes 数値 末尾から指定したバイト数を表示する
-n、–lines 数値 最終行から指定した行数を表示する
-q、–quiet、–silent ファイルごとのヘッダ表示を行わない
-v、–verbose ファイルごとのヘッダ表示を常に行う
-f、–follow ファイルを監視し、ファイルに内容が追加されると表示処理にもその内容を反映させる

 
主なオプションとしては、headも tailもよく似ています。
 
 

-nオプションで表示する行数を指定する

 
先にも紹介しましたが、「-n」オプションは表示する行数を指定する際に使用します。
 
headコマンドでも tailコマンドでも使い方は同じで、下記のように「-n」オプションに続いて行数を数値で指定します。
 

 
上記の例では、headでは最初の行から 100行分を、tailでは最後の行から 100行分を表示します。
 
head、tailともにデフォルトでは「-n 10」となる 10行が設定されています。
 
 

 
また、上記のように「-n」オプションを使わずに「-」に続いて数値を指定することでも行数を指定することができます。
ただし、こちらの方法は非推奨とされていますので、「-n」オプションを使う方をオススメします。
また、「-」と数値の間にスペースが入らないようにしましょう。
 
 
なお、head、tailともに「行数」は「改行の数」ということになります。
そのため、改行が入らない長い行があり、画面の幅によって自動的に折り返しをして複数行になっていたとしても、改行があるところまでを 1行というカウントになります。
 
 
また、数値に単位を付与することもできます。
 

 
 
単位はそれぞれの下記の通りとなります。
「b = 512」
「kB = 1000」
「K = 1024」
「MB = 1000 * 1000」
「M = 1024 * 1024」
「GB = 1000 * 1000 * 1000」
「G = 1024 * 1024 * 1024」
「TB = 1000 ^ 4」
「PB = 1000 ^ 5」
「EB = 1000 ^ 6」
「ZB = 1000 ^ 7」
「YB = 1000 ^ 8」
 
指定する際の注意点としては、「-n 100b」のように数値と単位の間にスペースが入らないようにしましょう。
 
 

-cオプションで表示する文字数を指定する

 
先の「-n」オプションは表示する行数を指定するものでしたが、「-c」オプションは表示する文字数を指定するものです。
 
 

 
上記のように「-c」を指定すると、100文字分だけを表示します。
 
「-c」オプションでも、「-c 100b」のように単位を付与することができます。
 
 

tail -f error.logでログをリアルタイム更新

 
tailコマンドで一番よく使うと言っても過言ではないオプションが「-f」だと思います。
 
「tailはファイルの末尾から指定の行数を表示する」というコマンドですが、「-f」オプションを付けると、「ファイルに情報が追記されるとその追記されたテキストをリアルタイムに画面に表示する」ようになります。
 
具体的には下記の用に指定します。
 

 
このように記述すると、最初は「error.log」の最後の 10行が表示されます。
しかし、処理は継続しており、何かの処理を実行して「error.log」にエラー情報が追加されると、その追加されたログ内容をリアルタイムに表示していきます。
 
この「-f」オプションを使うことで、ログファイルを何度も開き直すことなく、追加されるログの情報を確認することができます。
 
 
また、「tail -f」で表示し続けている処理を止める場合は「Ctrl+C」を押します。
「tail -f」は、終了の手続きをしないと処理が終了しません。
 
 

headと tailを組み合わせて「101行目~110行目」を取得

 
「head」コマンドにも「tail」コマンドにも「n1行目~n2行目」を取り出す、と言う機能はありません。
 
 
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
 
そのため、上記の画面イメージのような「101行目~110行目」を取得する場合は「head」と「tail」コマンドを組み合わせて取得します。
 
 

 
左側の処理が、先に「head」コマンドで 110行目まで取得して、その後「tail」コマンドで 10行分取り出す方法です。
 
 

 
右側の処理が、先に「tail」コマンドを使って 101行目から取得して、その後「head」コマンドで 10行を取り出す方法です。
 
ただし、先に tailを実行する方法は、あらかじめファイル全体が何行あるのか、が分かっている必要があります。
 
 
ファイルの行数を調べる際は、下記の様に「wc」コマンドを使用します。
 

 
 
wcコマンドに関しては、下記に詳細記事を書いていますのであわせて参考にしてください。
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド
 
 

ファイル自体を画面に収まるように表示させる場合は more、lessコマンドがある

 
長いファイルの一部を表示したい、という場合に head、tailコマンドを使用しますが、ファイルの内容をページ単位で表示して、キーボード操作によって画面をスクロールさせながら表示させたい、という場合には more、lessコマンドがあります。
 

 
more、lessはページャーコマンドとも言われ、長いファイルを画面単位で表示するためのコマンドです。
 
上記のように more、lessコマンドだけでもファイルを表示することができますが、下記のように「|(パイプ)」でつないで head、tailの表示結果をページャーで処理をすることもできます。
 

 
 
more、lessコマンドに関しては、下記に詳細記事を書いていますのであわせて参考にしてください。
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
 
 

ファイル自体を分割する場合は splitコマンドがある

 
ファイルの一部を取り出す方法として head、tailコマンドを紹介していますが、必要な情報がファイルのどの辺りにあるかがよく分からない、と言う場合もあるのではないでしょうか。
場合によっては、ファイルの容量が大きすぎて headや tailコマンドの処理に時間がかかるような場合などもあるでしょう。
 
そのような場合は、そもそものファイルを分割する「split」コマンドを利用する方法もあります。
 
例えば、error.logが GB単位のサイズになってしまっていて扱いにくい場合は、下記のように「split」コマンドを利用することで 10MB単位に分割することができます。
 

 
コマンドを実行すると、「error.log」を 10MBごとに「error.log-aa」「error.log-ab」「error.log-ac」というファイルに分割してくれますので、viエディタで開いてもそれほど重たい処理にはなりません。
 
splitコマンドに関しては、下記に詳細記事を書いていますのであわせて参考にしてください。
Linuxのsplitコマンドは指定したサイズにファイルを分割する
 
 
今回の記事では、ファイルの先頭行、もしくは、最終行から指定した行数分を表示する「head」「tail」コマンドについて解説をしましたが、ファイルの内容、および、テキスト情報についての操作に関連するコマンドは下記の記事にまとめていますので、あわせて参考にしてください。
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man
Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man

Linuxのコマンドの実行ファイルやマニュアルの情報を確認するコマンドwhich、whereis、whatis、apropos、manの機能と使い方、似たところと違うところの紹介。

Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する

Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。

Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド

Linuxでファイルを表示する際に行番号を付与するにはcatコマンドにnオプションを使うことでも可能。しかし、行番号を付与する専門のnlコマンドがある。ここではその使い方を詳細に解説。

Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドは指定したサイズにファイルを分割する

Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。

Linuxのマニュアルページ表示コマンドmanの解説
Linuxのマニュアルページ表示コマンドmanの解説

Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。

Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も

catはLinuxのコマンドで、本来の機能はファイルを連結だが、ファイルの内容を表示する機能のために使うことが多く使用頻度が高い。同種の機能のmore、less、tacコマンドについても解説。

Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare

Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。

Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法

作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。

Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説

Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。

Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など

Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。