tailコマンドについて詳しくまとめました 【Linuxコマンド集】

tailコマンド
  • このエントリーをはてなブックマークに追加
  • Pocket

tailはファイルの最終行から数行を表示するコマンドだ。

標準では10行を表示する。

同じような機能のheadコマンドと同じようにインデックスを作成するのに便利である。

後で詳しく説明するがtailにはそれ以上に便利なオプションも用意されている。

tailコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ tailファイル名

/etc/sensors3.confの最終行から数行を表示するには次のコマンドだ。

$ tail /etc/sensors3.conf

tailコマンド

/etc/sensors3.confの最終行から数行が表示された。

ファイルの複数指定

ファイル名は複数指定でき、半角空白でつなげることができる。

例えば、/etc/passwdと/etc/groupの両方を出力したい時は次のコマンドだ。

$ tail /etc/passwd /etc/group

また、ファイル名にワイルドカードを利用することもできる。

拡張子がPHPのファイルすべてを対象とする場合は、次のコマンドだ。

$ tail *.php

tailコマンド

拡張子がPHPのファイルすべての最終行数行が順次表示された。

複数のファイルを出力した場合は、各出力の前にファイル名が表示される。

tailコマンドのオプションたち

コマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -c(オプション--bytes=[-]K)

出力する文字数を指定する

オプション -n(オプション--lines=[-]K)

出力する行数を指定する

オプション -q(オプション--quiet, オプション--silent)

ファイル名を表示しない

オプション -v(オプション--verbose)

ファイル名を常に表示する

オプション -f(オプション--follow[={name|descriptor}])

ファイルの追記を監視する

詳細を解説する。

-cオプション(オプション--bytes=BYTE):出力する文字数を指定する

指定が無ければ最終行から10行を表示するが、-cオプションでは指定した文字数を出力する。

文字数はバイト単位だ。

文字数にKを付ければ、キロバイトを指定することもできる。

半角で数えた文字数なので、全角文字と半角カタカナと一般的ではない半角記号は指定したい文字数の倍を指定する。

書式は次のとおりだ。

$ tail -c 文字数 ファイル名

ファイルflag.phpの最終行10文字を表示する場合は、次のコマンドだ。

$ tail -c 10 flag.php

tailコマンド

ファイルflag.phpの最終行10文字が表示された。

改行も1文字として数えられている。

この場合、出力文字の最後の改行が挿入されないので、ファイル内容に続いて同じ行にコマンドプロンプトが表示される。

文字数の前に-をつけると、最終文字から指定した文字数を表示する

$ tail -c -文字数 ファイル名

ファイルflag.phpの最終文字から20文字を表示する場合は、次のコマンドだ。

$ tail -c -20 flag.php

tailコマンド

ファイルflag.phpの最終文字から20文字が表示された。

-nオプション(オプション--lines=[-]K):出力する行数を指定する

指定が無ければ最終行から10行を表示するが、-nオプションでは指定した行数を出力する。

書式は次のとおりだ。

$ tail -n 行数 ファイル名

ファイルflag.phpの最終行2行を表示する場合は、次のコマンドだ。

$ tail -n 2 flag.php

tailコマンド

ファイルflag.phpの最終行2行が表示された。

headコマンドの場合は、行指定だと最後の改行が表示され、コマンドプロンプトは次の行から始まるが、tailコマンドの場合は、最後の改行が表示されないので、コマンドプロンプトの直前までファイル内容が表示される。

行数の前に-をつけると、最終行から指定した行数以外を表示する

$ tail -n -行数 ファイル名

ファイルflag.phpの最終行から2行以外を表示する場合は、次のコマンドだ。

$ tail -n -2 flag.php

tailコマンド

ファイルflag.phpの最終行から2行以外が表示された。

-qオプション(--quietオプション, --silentオプション):ファイル名を表示しない

複数ファイルを指定した場合に表示される各ファイル名を表示しない。

書式は次のとおりだ。

$ tail -q ファイル名

拡張子がPHPのファイルすべてのファイルの最終行数行を、ファイル名を表示せずに、連続して表示する場合は次のコマンドだ。

$ tail -q *.php

tailコマンド

拡張子がPHPのファイルすべてのファイルの最終行数行が、対象が複数でありながらファイル名を表示せずに、表示された。

-vオプション(--verboseオプション): ファイル名を常に表示する

tailコマンドで、単一のファイルの最終行数行を表示する場合、ファイル名は表示しない。

どんな場合でも常にファイル名を表示する書式は次のとおりだ。

$ tail -vファイル名

ファイルflag.datの最終行から数行を表示し、ファイル名も同時に表示する場合は、次のコマンドだ。

$ tail -v flag.dat

tailコマンド

最終行から数行を表示し、対象がファイルflag.datの1ファイルでありながらファイル名も同時に表示された。

-fオプション(--follow[={name|descriptor}]オプション):ファイルの追記を監視する

ファイルの追記を監視するため、待機する。

追記があった場合は、追記の分を表示する。

書式は次のとおりだ。

$ tail -fファイル名

ファイルdata.datへの追記を監視するには次のコマンドだ。

$ tail -f data.dat

tailコマンド

待機状態となるために、コマンドプロンプトは表示しない。

-fオプションは状況によって様々な動作をする。

それぞれ紹介していく。

変更前と変更後でファイルサイズが変更しなかった場合

注意したいのは、ファイルサイズに変更がなければ、何も表示しない。

例えば、ファイルdata.datに「123」のみが記載されていたとしよう。

ファイルdata.datを「100」に上書きしても、なにも反応しない。

文字数、つまりファイル容量が変わらない限り、反応はない。

追記が変更前と同じ行だった場合

同じ行に追記した場合は、その行は一旦削除され、新たに追加分を含んだ文字列が追記されたことになる。

例えば、ファイルdata.datに「abc」のみが記載されていたとしよう。

ファイルdata.datを「abc123」に上書きすると、「abc」を削除して「abc123」を追記したという表示になる。

tailコマンド

文字の量が減り、ファイルサイズが小さくなった場合

追記に対しての動作だけではなく、削除に対してもきちんと反応する。

例えば、ファイルdata.datに「x=y*1+0.5」と記載されていたとしよう。

ファイルdata.datを「x=y*1+1」に上書きすると、「x=y*1+0.5」を削除して「x=y*1+1」を追記したという表示になる。

tailコマンド

「x=y*1+1」も削除すると、追記はないので、削除のメッセージだけとなる。

tailコマンド

この使い方での動作終了時は、Ctrl+Cのショートカットキーで終了する。

また、動作中はプロセスとして動作しているので、psコマンドの-aオプションでプロセス番号(PID)を確認後、killコマンドでも動作を終了できる。

特殊な使い方

ファイル名を指定しないか「-」と指定しコマンドを実行すると、何も出力しない。

headコマンドでは、キーボードから入力した文字をそのままオウム返しのように繰り替えして表示したが、tailコマンドでは、反応がないため、キーボードから入力したもののみが表示されている。

関連コマンド

最後にtailコマンドに関連して、基本的なファイルの表示コマンドも紹介しておく

catコマンド

ファイル内容を表示する。

headコマンド

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

viコマンド

ファイル内容を編集する。

まとめ

先にも書いたが、ファイルの内容を含んだインデックスを作るのに非常に有用なコマンドだ。

例えば、プログラムソースを作成していて、各ファイルのはじめ3行には必ずどんなファイルか記すというルールを徹底しておけば、このコマンドで様々なインクルードファイルなどをインデックスし、見やすくまとめることができる。

lsコマンド、grepコマンドと使い分けながら、活用していこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 通りすがり より:

    ●重複
    /etc/sensors3.confの最終行から数行を表示するには次のコマンドだ。

    $ tail /etc/sensors3.conf

    ●headコマンド
    ファイルの最終行数行を表示する。 「最終行数行」⇒「先頭行数行」

    1. リカレントテクノロジー より:

      ご指摘いただき誠にありがとうございます。
      記事、該当箇所修正いたしました。
      引き続きご愛読の程、よろしくお願いいたします。

通りすがり へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する