テキストファイルの中身をターミナル上でスクロールしながら閲覧できるコマンド。表示中はスペースで下にスクロール、b
で上にスクロールできる。
-F
--help
-i
-N
cat
でこれに相当するのは-n
)-r
-R
ls
は--color
、grep
は--color=always
を付けると色付きで出力される。-S
--version
-X
--
というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、-
で始まるファイル名を扱いたい場合に使うとよい。
tail -f
みたいにするにはless
に-R
を付ければ、色を表すエスケープシーケンスを色として解釈してくれる。
ls
での例
$ ls -alF --color | less -X -R
grep
での例
$ grep -rni --color=always abc . | less -X -R
tail -f
みたいにするには2015/05/19less
でファイルを見ているときに 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.
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で動いていれば、結果的にうまく表示できる。
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
のように検索にマッチした部分だけを表示させるには2017/01/28$ grep foo.txt -e PATTERN | less
のかわりに
$ less foo.txt
として、&
を押して、検索キーワードを入力して Enter を押すと、検索にマッチした行だけの表示に変わる。&
を押して続けて Enter を押せば、全行表示に戻る。
検索にマッチしない行だけを表示(grep -v -e PATTERN
のかわり)させたければ、&
を押して、!
を押してから検索キーワード、Enter を押せばよい。