いろいろ備忘録日記

主に .NET とか Go とか Python絡みのメモを公開しています。

tail -f の代わりに less を使う (tail -f, less +F, もしくは less で開いて F 押す)

概要

知らなかったのでメモメモ。less で tail -fの代わりが出来るという話です。

www.brianstorti.com

man 見てみる

man 見てみたら、普通に書いてありますね。。ちゃんと読まないとダメですね。。

$ man less

...割愛...

F        前方にスクロールし、ファイルの終端に達しても読み続ける。 
   通常このコマンドは、既にファイルの終端に達している場合に使われる。 閲覧中に大きくなり
          続けるファイルの末尾をモニターすることができる ("tail -f" コマンドと同じような動作をする)

試してみる

とりあえず、ログみたいに出力し続ける状態を以下で代用

$ i=0; while true; do printf "helloworld-%03d\n" ${i}; sleep 0.5; i=`expr ${i} + 1`; done > hello.txt

別のターミナル開いて、以下を実行

$ less +F hello.txt

すると以下のように、tail -f と同じような感じで出力を追いかけてくれます。

helloworld-74
helloworld-75
helloworld-76
helloworld-77
helloworld-78
helloworld-79
helloworld-80
helloworld-81
helloworld-82
helloworld-83
helloworld-84
helloworld-85
helloworld-86
helloworld-87
helloworld-88
helloworld-89
helloworld-90
helloworld-91
helloworld-92
helloworld-93
Waiting for data... (interrupt to abort)

下に interrupt to abort ってあるので、Ctrl-cすると

helloworld-106
helloworld-107
helloworld-108
helloworld-109
helloworld-110
helloworld-111
helloworld-112
helloworld-113
helloworld-114
helloworld-115
helloworld-116
helloworld-117
helloworld-118
hello.txt (END)

って感じで出力が止まります。

何が便利って、tail -f だと、そのままシェルに返ってきますが、less +F だと、このまま less で開いた状態になってくれるので、ここから移動も出来るし、検索もそのまま出来ます。これはいいですねー。

別のやり方

上では less コマンドに +F を付けていますね。オプションだったらハイフンじゃね?って思ったりしますが、これは「コマンド」を指定しています。「コマンド」ってのは、less でファイル開いた後に実行できるアクションのことです。

よく、less で開いた後に スペース 押してページ送りしたりしますね。あれもコマンドです。

コマンドラインから less を起動する時点でコマンドを指定して実行したい場合は + の後ろにコマンドを付けて実行します。

なので、上のコマンドでは、 less +F って形で実行しています。

てことは、普通に less hello.txt って実行して開いた後で、F を押しても同じことになります。

やってみると、Fを押すとtail -fモードになって、Ctrl-c押すと元の状態に戻って、またF押すとtail -f モードになります。

補足:less で いきなり末尾を表示したい場合

less コマンドでファイルを開いたりすると、通常はファイルの先頭から表示してくれます。

んで、ログとかになると、見たいのはファイルの末尾あたりの場合が多いです。

そういうときは、+G をつけると、いきなり末尾から表示してくれます。

$ less +G hello.txt

ちなみに、+G を指定しない状態で、less で開いた場合は G って打てば同じことになります。

補足:less で 行番号を表示したい場合

行番号が見たい場合は、-N オプションを付けます。

$ less -N +F hello.txt

とすると、行番号つきで tail -f 状態となります。これも便利です。

ちなみに、-N を指定しない状態で、 less で開いた場合は -N って打てば同じことになります。

行番号を非表示にする場合は -n って打ちます。

補足:もっとわかりやすくて素晴らしい記事

Qiita に 以下のような素晴らしい記事がありました。とても勉強になりました。記事書かれた方に感謝 m( )m

qiita.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com