Linuxのページ単位でのコマンド出力方法とその応用

Linuxで長いコマンド出力を1画面ずつ読むには、ページャーlessへ標準出力をパイプします。基本形はcommand | lessです。lessは大きなファイルでも入力全体を読み終える前に表示を始められ、前後移動、検索、行番号表示などが使えます。ただし、先頭コマンドの標準エラーは通常パイプへ入らず、パイプラインの終了状態も既定では末尾のless由来になります。またlessにはシェル起動や編集などの機能もあるため、権限の高い環境や信頼できない入力では安全設定を検討します。

目次

ファイルをlessで開く

既存のテキストファイルを読むだけなら、ファイル名を引数に渡します。ファイル名は引用し、--でオプションの終わりを示します。バイナリ、デバイス、巨大な圧縮ファイルを推測で開かず、まず種類、容量、権限を確認してください。lessは既定で通常ファイル以外を拒否することがありますが、強制オプションを安易に使わない方が安全です。

less -- '/var/log/app/example.log'

画面を閉じるにはqを押します。終了しても元ファイルの内容は通常変更されません。ただしless内からエディターを起動する機能や入力をファイルへ保存する機能があり、操作次第では別の変更につながります。調査端末ではまず移動と検索だけを使い、未知のキーを試す前にhでヘルプを確認します。

コマンド出力をページ送りする

一覧やヘルプなど、標準出力が長いコマンドはパイプでlessへ渡します。たとえばsystemdジャーナルはjournalctl自身がページャーを自動起動することがありますが、--no-pagerで標準出力へ出してからlessへ渡す構成も可能です。対象サービスと期間を先に絞り、全システムの長期間ログを無制限に流さないでください。

journalctl --unit=example.service --since='2026-07-16 09:00' --no-pager | less

標準エラーは端末へ直接表示されるため、lessの検索対象には通常入りません。エラーも一緒に読みたい場合は2>&1で結合できますが、正常出力とエラーの区別が失われます。監査や自動解析では別ファイルに保存する方が適切な場合があります。さらに、入力側コマンドが失敗してもlessが正常終了するとパイプ全体が成功に見えることがあるので、Bashではpipefailを検討します。

set -o pipefail
some_read_only_report 2>&1 | less
status=$?
printf 'pipeline status: %s\n' "$status"

基本の移動キー

  • Spaceまたはf:1画面進む。
  • b:1画面戻る。標準入力がパイプの場合、保持範囲や入力状態により戻れる範囲が異なる。
  • j/下矢印:1行進む。k/上矢印:1行戻る。
  • g:先頭へ移動。G:末尾へ移動。大きな入力では末尾到達まで読み込みが必要になる。
  • q:終了する。h:lessのヘルプを表示する。
  • =:現在位置などの情報を表示する。

キーは大文字と小文字で意味が異なります。端末エミュレーター、less版、キーバインド設定により矢印やHome/Endの挙動が違うことがあります。記事のキーが動かないときに端末設定を無理に変えず、hと対象版のマニュアルを確認します。

検索と次の一致

前方検索は/pattern、後方検索は?patternを入力してEnterです。次の一致はn、逆方向の一致はNです。lessの検索は正規表現として解釈される構成があるため、点や角括弧などを文字どおり探したい場合はエスケープや固定検索オプションを確認します。検索語にパスワードやトークンを入れると履歴ファイルへ残る可能性があるため、秘密値で検索しません。

一致しないときは、大文字小文字、文字コード、ロケール、改行をまたぐ語、ANSIカラー制御文字を確認します。コマンド側で色付き出力を無効にすると検索しやすくなります。大量出力をlessへ送ってから探すより、grepなどで候補を絞ってlessへ渡す方が負荷と情報露出を減らせます。ただしフィルター条件が厳しすぎると重要な前後関係を失うため、対象範囲を記録します。

行番号を表示する-N

less -Nは表示の左側に行番号を付けます。これは閲覧用の番号で、元ファイルへ書き込まれません。巨大ファイルでは行番号計算が遅くなる場合があります。ログが追記中なら番号はその時点の物理行に対するもので、イベントIDではありません。画面折り返し1段ごとに行が増えるわけでもありません。

less -N -- example.log
some_read_only_report | less -N

色付き出力は-Rを慎重に使う

less -Rは一部のANSIカラーエスケープを画面へ解釈して表示します。色を保持したいときに使えますが、未知の制御文字を含む信頼できない入力では、端末表示への影響を減らすためプレーンテキストを優先します。大文字の-Rと小文字の-rは安全性と許容範囲が異なり、通常は制限の強い-Rを使います。コマンド側の--color=neverが利用できるなら、色自体を出さない方法もあります。

some_color_report --color=always | less -R

追記ログを追う+F

less +F fileは末尾へ移動して新しい追記を待つ、tail -fに近い表示を開始します。Ctrl+Cで追跡モードを抜けると、過去へ移動や検索ができ、Fで追跡へ戻れます。ただしサービス障害中に高頻度ログを追うと端末やネットワークへ負荷をかけ、秘密情報が流れ続けることがあります。対象サービスと期間を絞り、ログローテーション時の挙動を確認します。

less +F -- /var/log/app/example.log

Ctrl+Cはless全体を必ず終了するキーではなく、実行中の読み取りや追跡を中断してプロンプトへ戻る動作になることがあります。終了はqです。ログの取得・保存が必要なら、画面をスクロールしてコピーするのではなく、承認されたログ収集手順で固定した期間を抽出します。

短い出力なら-F、終了条件に注意

-Fは内容が1画面に収まる場合にlessを終了させるオプションです。-Xと組み合わせる例も見かけますが、端末初期化や画面復元の挙動は環境で異なります。aliasやLESS環境変数へ恒久設定すると、他の利用者やmanコマンドの挙動まで変わるため、目的ごとにコマンド行で指定する方が追跡しやすい場合があります。

LESS環境変数とalias

lessはLESS環境変数から既定オプションを読みます。たとえば行番号や大文字小文字の扱いを個人設定できますが、スクリプトやサポート手順では利用者ごとの差を生みます。問題の再現時はless --versionとLESS、LESSOPEN、LESSCLOSE、LESSSECUREなどの設定有無を、秘密値を露出しない範囲で確認します。aliasのlessが別オプションを足している場合はtype lessで分かります。

LESSOPENと外部プログラム

LESSOPENは、lessがファイルを表示する前に入力プリプロセッサーを呼ぶ仕組みです。圧縮ファイルなどを透過表示する設定に使われますが、ファイル名が外部プログラムへ渡り、一時ファイルが作られる場合があります。信頼できないファイルや権限の高いアカウントでは、設定内容と実行ファイルの所有者を確認します。単なる閲覧だと思っていても外部処理が動く可能性があるためです。

LESSSECUREを使う場面

LESSSECURE=1でlessを安全モードにすると、シェル呼び出し、編集、別ファイルを開く操作、入力プリプロセッサー、ログ保存、パイプなど多くの機能が無効になります。sudoersやmanの運用でページャーからシェルへ抜ける経路を防ぐ目的にも関係します。ただし、LESSSECUREだけで権限設計全体が安全になるわけではありません。高権限のページャーを不用意に起動させず、sudoの許可コマンドと環境変数保持を管理します。

LESSSECURE=1 less -- untrusted-output.txt

manコマンドとページャー

manは長いマニュアルをページャーで表示します。移動・検索・終了はlessと同様に見える環境が多いですが、MANPAGERやPAGERにより別ページャーが使われる場合があります。自動処理でmanを実行するとページャー待ちになるため、非対話用途では適切なオプションや環境を使います。Web記事より、対象ホストに入っている版のmanページをまず確認する習慣が有効です。

表示されない・固まったように見える場合

  • 画面下にコロンがある:lessの入力待ちなので、Spaceで進むかqで終了する。
  • 出力がまだ増える:上流コマンドが実行中、ネットワーク待ち、追跡モードの可能性を確認する。
  • 色や文字が崩れる:コマンド側の色を無効にし、文字コードとless -Rの必要性を確認する。
  • 検索履歴が残る:LESSHISTFILEと組織ポリシーを確認し、秘密値を検索語に使わない。
  • qで戻れない:別ページャー、子プロセス、ヘルプ画面にいる可能性を確認し、端末をむやみに強制終了しない。
  • 終了後の状態が成功に見える:上流コマンドとパイプラインの終了状態を確認する。

lessは「長い出力を止めて読む」ための道具ですが、まず生成側で対象を絞り、標準エラー、終了状態、端末制御、秘密情報を意識することで安全に使えます。基本はcommand | less、移動はSpaceとb、検索は/、終了はqです。高権限や信頼できない入力ではLESSSECUREと最小権限を検討してください。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次