head

先頭から最初の数行を表示してくれます。デフォルトでは、10行を表示する ことになっています。例えば、

head ファイル名

と実行すれば最初の10行だけを表示し、行数を指定する場合、例えば、

head  -1 ファイル名

または

head  -n 1 ファイル名

と実行すると、最初の1行だけ表示します。試しに、.cshrcファイルの 先頭の8行だけ表示させると、

% head  -8 .cshrc
# @(#).cshrc
#################################################################
#
#         .cshrc file
#
#################################################################
#
#         set up search path

のようになりました。


ls でよく使う別のオプションとして、

% ls -alt

を紹介しました。「ls -al」がファイル名をアルファベット順に並べるのに対し て、「ls -alt」は更新時 刻のもっとも新しい順に並べます。ちなみに、オプションの並べ方には違いがありませ んので、「ls -tla」でも「ls -atl」でも変わりはありません。

ここでは、「ls -alt」と「head」を組み合わせて処理してみます。 まずは、「ls -alt」だけを実行すると、

% ls -alt
合キ[ 44
drwx-----x   11 susaki   teacher       512  4月 16 16:51 .
drwx-----x    2 susaki   teacher      1024  4月 16 16:48 command
drwx--s--x   45 susaki   teacher      2560  4月 16 16:39 ..
drwx-----x    3 susaki   teacher      1024  4月 16 16:35 literacy
drwx-----x    3 susaki   teacher       512  4月 15 14:25 gis
drwx-----x    6 susaki   teacher      1024  3月  1 13:40 lab
drwx-----x    2 susaki   teacher      2048  1月 29 11:45 soft
drwx-----x    2 susaki   teacher       512  1月  7 09:38 perl
drwx-----x   10 susaki   teacher      1024  7月 31  2001 lecture
drwx-----x    2 susaki   teacher       512  6月 29  2001 image
drwxr-x---    2 susaki   teacher       512  6月 28  2001 applets

この結果のうち、最初の3行だけ取り出すとなると、 | (パイプ)を 用いて「head」を組み合わせると、

% ls -alt | head -3
合キ[ 44
drwx-----x    2 susaki   teacher      1024  4月 16 16:52 command
drwx-----x   11 susaki   teacher       512  4月 16 16:51 .

のように表示されます。

tail

「tail」は”しっぽ”という意味で、「head」とは逆に終わりからの数行を 表示してくれます。デフォルトでは、10行を表示することになっています。例えば、

tail ファイル名

と実行すれば終わりの10行だけを表示し、行数を指定する場合、例えば、

tail  -1 ファイル名

または

tail  -n 1 ファイル名

とすれば終わりの1行だけを表示してくれます。

上記の「head」で示した例を「tail」にも適用すると

% ls -alt | tail -3
drwx-----x   10 susaki   teacher      1024  7月 31  2001 lecture
drwx-----x    2 susaki   teacher       512  6月 29  2001 image
drwxr-x---    2 susaki   teacher       512  6月 28  2001 applets
となり、作成日の古い順に、ファイルやディレクトリが3つだけ選ばれました。

headとtailの併用

上記の「head」の例では、

% ls -alt | head -3
合キ[ 44
drwx-----x    2 susaki   teacher      1024  4月 16 16:52 command
drwx-----x   11 susaki   teacher       512  4月 16 16:51 .

のように、先頭の3行といっても、「合計44」のような文字列も一行と数えられ て表示されていることがわかります。もし、本当に最新のファイルおよびディレ クトリだけを表示させるためには、どうすればいいでしょうか?

ここで、「head」と「tail」を併用する方法があります。まず、下記のように実 行させると、

% ls -alt | head -2
合キ[ 44
drwx-----x    2 susaki   teacher      1024  4月 16 16:52 command

相変わらず「合計44」という文字列も表示されてしまいます。そこで、「tail」 を | で連結させると、

% ls -alt | head -2 | tail -1
drwx-----x    2 susaki   teacher      1024  4月 16 16:52 command

と、望みの結果が表示されました。


[UNIXコマンドのページ] [須崎純一のトップページ]
須崎純一 京都大学大学 工学研究科都市環境工学専攻 環境情報学講座