基本的なコマンド( touch, head, tail )

ファイルのタイムスタンプの変更( touch )

 ファイルにはタイムスタンプ(最終更新日)が必ず存在する。タイムスタンプは ls コマンドの -l オプションをつけることで確認できる。

 touchコマンドはその最終更新時間を変更するコマンドである。

$ touch [ オプション ] [ ファイル名 ]

 touchコマンドを実行すると、ファイルのタイムスタンプが現在日時に変更される。なお、オプションにより、新しいタイムスタンプとなる日時を指定することもできる。

 ちなみに、ファイルが存在しない場合、touchコマンドは中身が空であるバイト0のファイルを作成する。

オプション

-t

 -t はファイルの更新時間をするオプションである。時間は[[CC]YY]MMDDhhmm[.SS]形式([]内が省略可)で指定する。これで、ファイルの最終更新時刻が変わったことが確認できる。

 touchコマンドで指定したファイルが存在しない場合、空のファイルを作成する。

[[CC]YY]MMDDhhmm[.SS]形式の意味

  • CC:年の最初の 2 桁 (世紀)。

  • YY:年の後半の 2 桁。 CC を指定せずに YY だけを指定した場合、YY の値が 69 - 99 の範囲内であれば、CC 値は 19 と見なされる。 その他の場合は、20 の CC 値が使われる。

  • MM:月を表す 1 - 12 の値。

  • DD:日を表す 1 - 31 の値。

  • hh:時を表す 0 - 23 の値。

  • mm:分を表す 0 - 59 の値。

  • SS:秒を表す 0 - 59 の値。

ファイルの一部の取得( head, tail )

headコマンド

 headコマンドはファイルの先頭部分を標準出力する。

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

オプション

-n 行
先頭から指定した行を標準出力する。

-c バイト
先頭から指定したバイト分を標準出力する。

 ファイル名の部分を空白、もしくはハイフン( - ) にした場合は標準入力からデータに対し処理を行う。従って、以下の三つのコマンドの実行結果は同一になる。

$ head FILE      [FIlE]の先頭10行を表示
$ cat FILE | head - 標準入力からの内容のうち先頭10行を表示
$ cat FILE | head    標準入力からの内容のうち先頭10行を表示

 オプションに行数を指定しなかった場合は先頭10行が表示される。オプションをつけることにより、表示する行数を変更できる。

tailコマンド

 tail は head の逆で、ファイルの終わりの部分を標準出力する。オプションを付けない場合は末尾の10行を標準出力する。

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

オプション

-n 行
末尾から指定した行を標準出力する。

-c バイト
末尾から指定したバイトを標準出力する。

 こちらも head と同様だが、ファイル名の部分を空白、もしくはハイフン( - ) にした場合は標準入力からデータに対し処理を行う。従って、以下の三つのコマンドの実行結果は同一になる。

$ tail FILE      [FILE]の末尾10行を表示
$ cat FILE | tail - 標準入力からの内容のうち末尾10行表示
$ cat FILE | tail  標準入力からの内容のうち末尾10行表示

特別なオプション -f

 tail は本来ファイルの終わりを表示するコマンドである。しかし、ファイルによってはその終わりが随時変わることがある。-f オプションは変更をリアルタイムをモニタすることが可能となる。よく用いられる目的にログファイルのモニタが挙げられる。

 システムの変更やサービスの動作などでメッセージがログに記載されると、その内容が出力される。

$ tail -f [ ファイル名 ]
tail コマンドの実行例
$ man less > ~/manual-less

テスト用のファイルを作成している。

$ tail manual-less
 Mark Nudelman
       Send bug reports or comments to <bug-less@gnu.org>
       See http://www.greenwoodsoftware.com/less/bugs.html for the latest list
       of known bugs in less.
       For more information, see the less homepage at
       http://www.greenwoodsoftware.com/less.



                           Version 487: 25 Oct 2016                    LESS(1)

 manual-lessファイルの末尾10行が表示される。

-n オプションの実行
$  tail -n 5 manual-less
       http://www.greenwoodsoftware.com/less.



                           Version 487: 25 Oct 2016                    LESS(1)

 末尾5行を標準出力している。

-fオプションの実行
$ tail -f manual-less
       Mark Nudelman
       Send bug reports or comments to <bug-less@gnu.org>
       See http://www.greenwoodsoftware.com/less/bugs.html for the latest list
       of known bugs in less.
       For more information, see the less homepage at
       http://www.greenwoodsoftware.com/less.



                           Version 487: 25 Oct 2016                    LESS(1)

 tailコマンドに -fオプションを付けたので、ファイルの終わりの部分が標準出力されるが、シェルに制御が戻らない。

 新しく別の端末を開き、以下のコマンドを実行する

$ echo 'Hello' >> manual-less

 すると、manual-less ファイルにデータが追加される

$ tail -f manual-less
 Mark Nudelman
       Send bug reports or comments to <bug-less@gnu.org>
       See http://www.greenwoodsoftware.com/less/bugs.html for the latest list
       of known bugs in less.
       For more information, see the less homepage at
       http://www.greenwoodsoftware.com/less.



                           Version 487: 25 Oct 2016                    LESS(1)
Hello

 tail -f によるファイルの読み込みは「 Ctrl」 + C キーを押し処理が中断されるまで継続される。これにより、 tail -f はファイルを動的に読み込むことができるがわかる。

 webサーバーのアクセルログやエラーログを見るのに便利なコマンドである。