今号では、head コマンドおよび tail コマンドの使い方やオプションについてご紹介します!
※用途が似ているため、今号では 2つのコマンドについて同時にご説明させていただきます
head コマンド・tail コマンドとは
head コマンドや tail コマンドは、ファイルの一部分の情報を取り出して表示するコマンドです。
情報量の多いテキストファイルやログファイルなどでも、冒頭の部分や末尾の部分 (ログファイルであれば一番新しい情報に該当します) のみを取り出して表示する事ができるため、必要な情報を探しやすいというメリットがあります。
基本の書式
“head <ファイル名>” コマンドを実行すると、指定したファイルの行頭から 10行の情報が、
“tail <ファイル名>” コマンドを実行すると、指定したファイルの末尾から 10行の情報が表示されます。
例として、1 から 30 までの数字を各行に記載した test.txt コマンドの情報を表示してみます。
$ cat test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
head コマンドを実行した場合
$ head test.txt 1 2 3 4 5 6 7 8 9 10
tail コマンドを実行した場合
$ tail test.txt 21 22 23 24 25 26 27 28 29 30
上記 head コマンドや tail コマンドの出力結果を、標準出力ではなくファイルに出力し、内容を確認したい場合は下記の様にすると良いですね。
$ head test.txt > file.txt $ cat file.txt 1 2 3 4 5 6 7 8 9 10
head コマンドおよび tail コマンドのオプション
次に、head コマンドおよび tail コマンドで使用可能なオプションをご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。
- 表示する行数を指定する (head コマンド、tail コマンド共通)
-n もしくは –を指定すると、指定した数字分の行数で情報を表示します。$ head -n 5 test.txt 1 2 3 4 5
$ tail -n 5 test.txt 26 27 28 29 30
上記は、-5 としても同様に指定した行数の情報を表示します。
$ head -5 test.txt 1 2 3 4 5
$ tail -5 test.txt 26 27 28 29 30
- ファイルの情報を連続して取得し続ける (tail コマンドのみ)
tail -fを実行すると、ファイルの末尾の情報を連続して取得し続けます。
ログファイルなど、リアルタイムで情報が更新されるファイルの情報を監視する際などに便利です。# tail -f /var/log/messages Nov 18 09:30:01 example systemd: Removed slice User Slice of root. Nov 18 09:40:01 example systemd: Created slice User Slice of root. Nov 18 09:40:01 example systemd: Started Session 8618 of user root. Nov 18 09:40:01 example systemd: Removed slice User Slice of root. Nov 18 09:43:04 example systemd: Created slice User Slice of root. Nov 18 09:43:04 example systemd: Started Session 8619 of user root. Nov 18 09:43:04 example systemd-logind: New session 8619 of user root. Nov 18 09:43:05 example dbus[5201]: [system] Activating service name='org.freedesktop.problems' (using servicehelper) Nov 18 09:43:05 example dbus[5201]: [system] Successfully activated service 'org.freedesktop.problems' Nov 18 09:50:01 example systemd: Started Session 8620 of user root. (指定したファイルの情報が追加されるたびに、連続して取得され続ける)
※情報の取得を終了したい場合は [Ctrl] + [C] を押下します。
なお tail コマンドではありませんが、less コマンドの実行中に [Shift] + [F] を押下する事でも同様に、連続して情報を取得し続けます (情報の取得を終了したい場合は [Ctrl] + [C] を押下)。