効果的なファイルナビゲーションのための「less」が「more」コマンドよりも速い理由の理解

Moreは、ファイルの内容をコンソールに表示するために使用される*nixコマンドです。moreコマンドの基本的な使い方は、以下に示すようにファイルに対してコマンドを実行することです:

関連記事: 例を挙げて‘cat’と‘tac’コマンドの違いを学ぶ

Linuxの‘more’コマンド

# more /var/log/auth.log
View Contents of auth.log File
Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session closed for user root
Apr 12 11:55:01 tecmint CRON[7159]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session closed for user root
Apr 12 11:55:02 tecmint CRON[7159]: pam_unix(cron:session): session closed for user root
Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session closed for user root
Apr 12 12:05:01 tecmint CRON[7435]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session closed for user root
Apr 12 12:05:02 tecmint CRON[7435]: pam_unix(cron:session): session closed for user root
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session closed for user root
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session closed for user root
....

moreコマンドを他のコマンド(例:catコマンド)と組み合わせて使用する別の方法は、以下の例に示すようにパイプで行います:

# cat /var/log/auth.log | more
View and Navigate Contents of File

ファイルを行ごとにナビゲートするには、Enterキーを押すか、1ページずつナビゲートするには、現在の端末画面サイズが1ページとなります。qキーを押してコマンドを終了します。

A useful option of more command is the -number switch which allows you to set the number of line a page should contain. As an example display the auth.log file as a page of 10 lines:

# more -10 /var/log/auth.log
Show Only First 10 Lines of File

また、以下に示すように+numberオプションを使用して特定の行番号から始まるページを表示することもできます:

# more +14 /var/log/auth.log
Show Only First 14 Lines of auth.log File
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session closed for user root
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session closed for user root
Apr 12 12:16:01 tecmint mate-screensaver-dialog: gkr-pam: unlocked login keyring
Apr 12 12:17:01 tecmint CRON[7793]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:17:01 tecmint CRON[7793]: pam_unix(cron:session): session closed for user root
Apr 12 12:20:01 tecmint CRON[7905]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:20:01 tecmint CRON[7905]: pam_unix(cron:session): session closed for user root
Apr 12 12:25:01 tecmint CRON[8107]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:25:01 tecmint CRON[8108]: pam_unix(cron:session): session opened for user root by (

Linuxの‘less’コマンド

moreと同様に、lessコマンドはファイルの内容を表示し、ファイルをナビゲートすることができます。morelessの主な違いは、lessコマンドが高速であることです。なぜなら、一度にファイル全体を読み込まず、ページ/キーを使用してファイルをナビゲートできるからです。

ファイルに対して単独のコマンドとして使用するか、Linuxコマンドの多くとパイプで使用して、スクリーン出力を絞り込んで結果をスクロールできます。

# less /var/log/auth.log
# ls /etc | less

ファイルを行ごとにナビゲートするには、Enterキーを押します。ページナビゲーションはspacebarキーで操作できます。ページサイズは現在の端末画面サイズで表されます。コマンドを終了するには、qキーを入力します。これはmoreコマンドと同じ方法です。

A useful feature of less command is the use of /word-to-seach option. For instance you can search and match all sshd messages from a log file by interactively specifying the /sshd string.

View File Content Using less Command

特定の行番号からファイルを表示するには、次の構文を使用します:

# less +5 /var/log/auth.log

lessコマンドで各行の番号を追跡する必要がある場合は、-Nオプションを使用します。

# less -N /var/log/daemon.log
Show Number for Every Line in File
      1 Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session opened for user root by (uid=0)
      2 Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session closed for user root
      3 Apr 12 11:55:01 tecmint CRON[7159]: pam_unix(cron:session): session opened for user root by (uid=0)
      4 Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session opened for user root by (uid=0)
      5 Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session closed for user root
      6 Apr 12 11:55:02 tecmint CRON[7159]: pam_unix(cron:session): session closed for user root
      7 Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session opened for user root by (uid=0)
      8 Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session closed for user root
      9 Apr 12 12:05:01 tecmint CRON[7435]: pam_unix(cron:session): session opened for user root by (uid=0)
     10 Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session opened for user root by (uid=0)
     11 Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session closed for user root

デフォルトでは、lessコマンドを終了する唯一の方法は、qキーを押すことです。この動作を変更してファイルの末尾に到達したときに自動的に終了するには、-eまたは-Eオプションを使用します:

# less -e /var/log/auth.log
# less -E /var/log/auth.log

パターンの最初の出現箇所でファイルを開くには、次の構文を使用します:

# less +/sshd /var/log/auth.log
Show Given Matching String in File
Apr 12 16:19:39 tecmint sshd[16666]: Accepted password for tecmint from 192.168.0.15 port 41634 ssh2
Apr 12 16:19:39 tecmint sshd[16666]: pam_unix(sshd:session): session opened for user tecmint by (uid=0)
Apr 12 16:19:39 tecmint systemd-logind[954]: New session 1 of user tecmint.
Apr 12 16:19:48 tecmint sshd[16728]: Received disconnect from 192.168.0.15: 11: disconnected by user
Apr 12 16:19:48 tecmint sshd[16666]: pam_unix(sshd:session): session closed for user tecmint
Apr 12 16:20:01 tecmint CRON[16799]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 16:20:02 tecmint CRON[16799]: pam_unix(cron:session): session closed for user root
Apr 12 16:25:01 tecmint CRON[17026]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 16:25:01 tecmint CRON[17025]: pam_unix(cron:session): session opened for user root by (uid=0)

上記のコマンドは、lessauth.logファイルをsshd文字列の最初の一致箇所で開くように指示します。

lessコマンドで開いたファイルの内容を自動的に追加するには、Shift+fキーの組み合わせを使用するか、次の構文でlessを実行します。

# less +F /var/log/syslog

これにより、lessがインタラクティブモード(ライブ)で実行され、新しいコンテンツが表示され、新しいデータがファイルに書き込まれるのを待ちながら、リアルタイムで表示されます。この動作はtail -fコマンドに類似しています。

lessを使用するかどうかを決めるのは個人の選択ですが、キーワードをマッチングしながらログファイルをインタラクティブに表示できます。ライブモードから退出するには、単にCtrl+cキーを押してください。

# less +/CRON /var/log/syslog

どちらを使用するかを決めるかは個人の選択ですが、lessはより多くの機能を備えています。

関連記事: head、tail、およびcatコマンドを使用してファイルを効果的に管理する

Source:
https://www.tecmint.com/linux-more-command-and-less-command-examples/