日々之迷歩

世の中わからんことだらけ

ITが複雑で難しくなっていく様に翻弄される日々です。微力ながら共著させていただいた「シェル・ワンライナー160本ノック」をよろしくお願い申し上げまする。

改めてlessコマンドの使い方

テキストファイルを閲覧するためによく使うのがlessコマンド。特に巨大なファイルを開く時などは必須だろう。巨大なファイルをVimやEmacs、その他のテキストエディタで開くと死ぬるで・・・

また、コマンドの出力結果をパイプでlessに渡し、出力結果をジックリ確認したりするのに重宝する。普段何気なく使っていらっしゃる方々が多いと思うが、改めて使い方の確認をしてみると、何かしらの発見があるかもしれない。

起動時オプション

各オプションは短いのと長いのがセットになっている。設定とかにはわかりやすい長いの、起動時の指定や機能の切替には短いの、と使いわけよう。-Xは案外知られていないかも。終了時にショボーンとなるのを防げるのでオススメ。

オプション 機能
-X or --no-init 終了時に画面をクリアしない。目的の場所を見つけてless終了して、画面がクリアされてショボーン・・となるのを防ぐ。
-i or --ignore-case 検索時に大文字小文字を無視
-I or --IGNORE-CASE 大文字指定の時のみ大文字小文字無視
-S or --chop-long-lines 長い行を折り返さない。
-N or --LINE-NUMBERS 行数表示
-r or --raw-control-chars コントロールコードを表示。
-R or --RAW-CONTROL-CHARS ANSIカラー表示。Railsログのように、太字や色付けがあるファイルを開く場合に便利。
-M or --LONG-PROMPT 詳細なプロンプト表示(行数、位置、ファイル名等)

操作コマンド

私がよく使うもの。基本的にviとよく似ている。というかほぼ同じ。行数指定の移動、最初の行、最終行への移動、文字列検索のやり方と検索ハイライトの消し方は重要。

コマンド 機能
q 終了。HELPを終了するときにも。
h ヘルプ。
矢印 矢印の方向に移動。-S--chop-long-linesで行を折り返さない時は、左右矢印で移動可能。
j 1行ずつ下へ
100j 100行下へ
k 1行ずつ上へ
space 次のページへ移動
b 前のページへ移動
p 最初の行に移動
G 最終行に移動
100G 100行目に移動
/hoge 下方向にhogeを検索。検索にマッチした場所をハイライト。nで前方向へ(下へ)移動。Nで逆方向へ(上へ)移動。
?hoge 上方向にhogeを検索
ESC-u 検索ハイライトを削除。ESCはCtrl-[で代用可能(viでも同様)
= or Ctrl-G or :f ステータス表示(ファイル名、表示行数/全体行数、表示文字数/全体文字数、など)
Shift+f ログ追跡モード。Ctrl+`cで止めてページアップダウン、検索が可能。Ctrl-cで戻る。

Tips

オプションが起動中のトグルスイッチになってるのは、案外知られていないのでは?

起動中も起動時オプションを入力可能(重要!

これは意外に知らない人が多いようだが、lessを使っている最中でもトグルスイッチ的に切替可能。私がよくやるのが、-Sを入力する度に、長い行の折り返しを切り替える。他にも-Nを入力する度に、行番号表示非表示を切り替えたり。

Twitterで指摘されて気がついたのだが、残念ながら -X --no-init オプションは起動後に切り替え出来ない。そもそもデフォルトの動作が画面クリアしてしまうのは何故なんだろうか??

起動時デフォルトオプション指定

環境変数LESSに起動時のデフォルトオプションを指定可能。例えばこんな風に設定する。

sh系はこちら(bash、zsh)

export LESS='--no-init --IGNORE-CASE --RAW-CONTROL-CHARS --LONG-PROMPT'

csh系はこちら(csh、tcsh)

setenv LESS '--no-init --IGNORE-CASE --RAW-CONTROL-CHARS --LONG-PROMPT'
日本語の表示ついて

日本語(UTF-8)を表示するには、環境変数LANGにja_JP.UTF-8を設定し、端末の文字コードもUTF-8に設定しておく。UTF-8以外の文字コードの場合は、nkfを使ってnkf -w | less

巨大なファイルを開いた時

行数やプロンプト表示を設定した状態で、行数の多いファイルを開くと、 Calculating line numbers... (interrupt to abort) と表示され、負荷がかかる場合がある。 Ctrl-cを押すと行数計算を止める。

参考URL

Lessの便利な使い方 - blog.daich.org

Padrinoのログをlessで表示するには? - QA@IT

lessコマンドを少し便利にしておく

http://blog.oretachino.com/entry/2014/12/07/203705