日々之迷歩

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

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

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

テキストファイルを閲覧するためによく使うのがlessコマンド。特に巨大なファイルを開く時などは必須でしょう。Gバイト単位の巨大なファイルをVimやEmacs、その他のテキストエディタで開くと、メモリを大量に消費して最悪OSが反応無しとかになります、、、

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

起動時オプション

各オプションには、短いショートオプションと長いロングオプションがあります。設定ファイルに記載する場合は分かりやすいロングオプション、コマンド実行時にはタイプ数が少ないショートオプションを使うと便利でしょう。特に-X/--no-initオプションは案外知られていないかもしれません。終了時に画面が消えてショボーンとなるのを防げるのでオススメです。

オプション 機能
-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

Redirecting…

QA@IT サービス終了のお知らせ - @IT

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

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