less コマンド

テキストファイルの中身をターミナル上でスクロールしながら閲覧できるコマンド。表示中はスペースで下にスクロール、b で上にスクロールできる。

オプション

-F
行数が短くて位置画面に収まる場合は less がすぐに終了する。
--help
ヘルプ表示
-i
検索モードでキーワードをすべて小文字で入力した場合に、大文字小文字の区別をしない。 検索キーワードに大文字が混ざっていた場合にはこのオプションをつけていても大文字小文字を区別する。
-N
行番号を表示する。(cat でこれに相当するのは -n)
-r
エスケープシーケンスなどのバイナリをエスケープシーケンスとして解釈せずに、 そのまま出力される。
-R
色のエスケープシーケンスをそのとおりに解釈して 色付きで表示する。 色以外のエスケープシーケンスは解釈せず、 そのまま出力される。 ls--colorgrep--color=always を付けると 色付きで出力される。
-S
長い行を折り返さずに横方向にもページングできるようにする。 各行の左の方だけ見えれば十分な場合にもこのオプションは便利。
--version
バージョン表示
-X
less 終了時に画面をクリアしない。

-- というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、 - で始まるファイル名を扱いたい場合に使うとよい。

スポンサーリンク

閲覧中に使える主なキーバインド

q
lessコマンドを終了
SPACE
1画面分下にスクロール
f
1画面分下にスクロール
b
1画面分上にスクロール
g
ファイルの先頭に移動
Shift + <
ファイルの先頭に移動
Shift + G
ファイルの最後に移動
Shift + >
ファイルの最後に移動
Shift + F
監視モードに移行 -> tail -f みたいにするには
:n
次のファイルに移動 -> 複数のファイルをまとめて閲覧するには
:p
前のファイルに移動 -> 複数のファイルをまとめて閲覧するには

HOWTO

色付きのコマンド出力を less で見るには

less-R を付ければ、色を表すエスケープシーケンスを色として解釈してくれる。

lsでの例

$ ls -alF --color | less -X -R

grepでの例

$ grep -rni --color=always abc . | less -X -R

tail -f みたいにするには

lessでファイルを見ているときに Shift+F を押すと、 tail -f みたいにファイル追記を監視できる。監視モードから通常のモードに移るには Ctrl+C を押す。

+F というオプションを使って less +F ファイル名 とすると、始めから監視モードになる。このときも Ctrl+C を押すと、普通の less に戻る。

Make ‘less’ behave like ‘tail -f’. | commandlinefu.com
http://www.commandlinefu.com/commands/view/1024/make-less-behave-like-tail-f.

UTF-8のターミナルからEUC-JPなサーバに接続してlessで文字化けしてしまう場合

less hoge.txt で日本語が ? とかに化けてしまい、 nkf -Ew hoge.txt | less で日本語が [3m<9A> みたいなコードで表示されてしまう場合、 -r をつけることでうまく表示できる。

$ nkf -Ew hoge.txt | less -r

たぶん、[3m<9A> とかはlessコマンドがUTF-8を扱えないために変換しちゃうのだと思う。-r は文字を解釈せずにそのままスルーするオプションで、端末がUTF-8で動いていれば、結果的にうまく表示できる。

複数のファイルをまとめて less で閲覧するには

findコマンドなどのファイル一覧の出力に対して、それらを全部連結して less で閲覧するには

$ find ... -type f | awk '{print "echo " $1 "; cat -n " $1}' | sh | less

とすると、以下のようなイメージで閲覧できる。

a.txt
   1 a.txtの1行目
   2 a.txtの2行目
   3 a.txtの3行目
b.txt
   1 b.txtの1行目
   2 b.txtの2行目
   3 b.txtの3行目
c.txt
   1 c.txtの1行目
   2 c.txtの2行目
   3 c.txtの3行目

catコマンドにある -n オプションは行番号をつけて出力する意味。

特定のディレクトリ直下にあるファイルを閲覧するには (そのディレクトリの中にサブディレクトリが存在しない場合)

$ ls foo/bar/* | awk '{print "echo " $1 "; cat -n " $1}' | sh | less

複数のファイルをくっつけずにlessコマンドの複数ファイルを閲覧できる機能を使うにはパラメータに普通に複数のファイル名を渡す。

$ less a.txt b.txt c.txt

findコマンドなどの出力結果をこの機能を使って閲覧するにはxargsコマンドと組み合わせる。

$ find ... -type f | xargs less

この使い方では、lessでの閲覧中に:nを(コロン、nの2キーを順番に)押すと次のファイルに移動する。 :pを押すと前のファイルに戻る。

表示中に特定の行に素早く移動するには

1000g と押すと、1000行目に移動できる。

テキストファイルを素早く閲覧するには

自分は以下をよく使う。

$ less -X foo.txt

または

$ less -XF foo.txt

-F を付けると、短いファイルだったときにcatと同じ挙動になって便利。

-> 長いテキストファイルを見るには

行番号を表示するには

-> テキストファイルに行番号を付けるには

閲覧中に grep のように検索にマッチした部分だけを表示させるには

$ grep foo.txt -e PATTERN | less

のかわりに

$ less foo.txt

として、 & を押して、検索キーワードを入力して Enter を押すと、検索にマッチした行だけの表示に変わる。 & を押して続けて Enter を押せば、全行表示に戻る。

検索にマッチしない行だけを表示(grep -v -e PATTERN のかわり)させたければ、 & を押して、 ! を押してから検索キーワード、Enter を押せばよい。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク