Linux / コマンド / less - 長いファイルを検索しながらページ単位で表示する

lessは、長いテキストを画面ごとに閲覧する対話型ページャー(pager)です。前後の移動、検索、行番号移動をサポートしており、ファイル全体を最初に画面に出力しないため、ログやマニュアルを読むのに適しています。

この記事ではlessの基本的な文法と主なオプション、実際の使用例、関連コマンドとの違い、使用時の注意点について説明します。

lessコマンドとは?

ファイルや標準入力を専用の画面で表示し、通常の閲覧操作では元のファイルを変更しません。実行後、キーボードコマンドで移動し、qで終了します。オプションやキー操作は、配布版にインストールされたlessのバージョンによって異なる場合があります。

基本的な文法

less [オプション] [ファイル ...]

オプションや詳細な動作は実装やバージョンによって異なる場合があります。現在のシステムではless --helpとman lessでインストールされたコマンドの説明を確認してください。

lessの基本的な使い方

ファイルを開いて移動する

Spaceは次の画面、bは前の画面、上下の方向キーは行単位移動、gとGは最初と最後に移動します。

less system.log

内容を検索する

実行中、/文字列は下方向検索、?文字列は上方向検索です。n は直前の検索と同じ方向、N は逆方向の一致に移動します。/var/log/messages は一例で、存在しないディストリビューションもあります。実在する自分のテキストログに置き換えてください。

less /var/log/messages

コマンド出力をページで表示する

長い出力はパイプで渡します。色コードを保持するには、生成コマンドとlessオプションを調整する必要があります。

journalctl -b | less

実行すると表示される画面

less sample.txtはファイルの内容をページ画面で表示します。一般的な標準出力ブロックのように一度に最後まで表示せず、キー入力を待ちます。

less sample.txt

ファイルの最後まで移動すると、画面下に(END)が表示されることがあります。Spaceは次の画面、bは前の画面、/単語は検索、qは終了です。ステータス行と色は設定・端末によって異なります。

主なオプション

オプション 説明
-N 各行に行番号を表示します。
-S 長い行を折らずに横に切って表示し、左右に移動できるようにします。
-i 検索語が小文字のみで構成されている場合、大文字小文字を区別しません。
-I 検索では常に大文字と小文字を無視します。
-R 一部のANSIカラー制御シーケンスを画面に反映します。
+F ファイルの末尾を追跡するモードで開始します。

実践的活用例

行番号と長い行を確認する

設定ファイルや表形式のログは行番号を表示し、自動改行をオフにすると読みやすくなります。

less -NS access.log

ファイル末尾の新しい内容を追跡する

+Fの状態で新しい内容を待ち、Ctrl+C で追跡を止め、通常の閲覧モードへ戻って検索できます。

less +F application.log

カラー付き出力を読む

信頼できる出力の色だけを維持し、制御シーケンスの処理範囲がより広いオプションは、セキュリティへの影響を理解した上で使用します。

grep --color=always -n 'failed' app.log | less -R

lessと関連コマンドの比較

コマンド 主な役割 適した状況
less 双方向検索・探索 長いファイルとコマンド出力
more 基本ページ移動 シンプルで広くインストールされた環境
cat 全内容を即座に表示 短いファイル
tail -f 末尾リアルタイム追跡 新しいログの監視

使用する際の注意点

キーコマンドとシェルコマンドを区別する

less 内で入力する /、g、q はシェルコマンドではありません。

制御シーケンスを無条件に許可しない

信頼できないファイルのソースでは、端末制御文字を広範に解釈する設定を避けます。

ローテーションされるログに注意する

ログローテーション中にファイルが置き換えられると、追跡結果が期待と異なる場合があるため、サービス専用のログツールの方が適していることがあります。

FAQ

lessを終了するにはどうすればよいですか?

qを押します。

次の検索結果に移動するにはどうすればよいですか?

nは同じ方向の次の一致へ、Nは逆方向の一致へ移動します。

長い行が自動で折り返されないようにするには?

less -S ファイルを使用して左右の矢印キーで移動します。

lessはファイル全体をメモリに読み込むのですか?

通常のファイルは必要な部分を読みながら閲覧できます。一方、標準入力やパイプでは、既定で必要に応じてメモリ上のバッファが追加されるため、大量に読み進めるとメモリ使用量も増えることがあります。先頭から表示を始めるために全体を読み終える必要はありませんが、終端への移動などでは残りの入力を読む必要があります。

参考資料