Tại sao lệnh 'less' nhanh hơn lệnh 'more' trong điều hướng tập tin Linux

More là một dòng lệnh *nix được sử dụng để hiển thị nội dung của một tập tin trong một cửa sổ dòng lệnh. Cách sử dụng cơ bản của lệnh more là chạy lệnh trên một tập tin như dưới đây:

Tìm hiểu lệnh Linux 'more'

# more /var/log/auth.log
Xem nội dung của tập tin auth.log
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
....

Một cách khác để sử dụng lệnh more kết hợp với các lệnh khác, như lệnh cat, như ví dụ dưới đây:

# cat /var/log/auth.log | more
Xem và điều hướng nội dung của tập tin

Để dùng lệnh điều hướng qua tập tin từng dòng một, nhấn phím Enter hoặc nhấn phím Spacebar để điều hướng từng trang một, trang hiện tại có kích thước màn hình hiện tại của bạn. Để thoát lệnh chỉ cần nhấn phím q.

Một tùy chọn hữu ích của lệnh more là công tắc -số cho phép bạn đặt số dòng mỗi trang. Ví dụ hiển thị tập tin auth.log như một trang gồm 10 dòng:

# more -10 /var/log/auth.log
Chỉ hiển thị 10 dòng đầu tiên của tập tin

Bạn cũng có thể hiển thị một trang bắt đầu từ một số dòng cụ thể bằng cách sử dụng tùy chọn +số như dưới đây:

# more +14 /var/log/auth.log
Chỉ hiển thị 14 dòng đầu tiên của tập tin auth.log
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 (

Tìm hiểu lệnh Linux 'less'

Tương tự như more, lệnh less cho phép bạn xem nội dung của một tập tin và điều hướng qua tập tin. Điểm khác biệt chính giữa moreless là lệnh less nhanh hơn vì nó không tải toàn bộ tập tin cùng một lúc và cho phép điều hướng qua tập tin bằng cách sử dụng các phím page up/page down.

Nó có thể được sử dụng như một lệnh độc lập trong việc truy cập tập tin hoặc được sử dụng với pipe (|) với nhiều lệnh Linux để thu hẹp kết quả màn hình cho phép bạn cuộn qua kết quả.

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

Bạn có thể điều hướng qua tập tin từng dòng một bằng cách nhấn phím Enter. Điều hướng từng trang có thể được thực hiện bằng phím spacebar. Kích thước trang được đại diện bởi kích thước màn hình hiện tại của bạn. Để thoát lệnh, gõ phím q, tương tự như lệnh more.

Một tính năng hữu ích của lệnh less là việc sử dụng tùy chọn /từ-khóa-để-tìm-kiếm. Ví dụ, bạn có thể tìm kiếm và khớp tất cả các thông báo sshd từ tập tin nhật ký bằng cách chỉ định chuỗi /sshd theo cách tương tác.

Xem nội dung tập tin bằng lệnh less

Để hiển thị một tập tin bắt đầu từ một số dòng cụ thể, sử dụng cú pháp sau:

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

Nếu bạn cần theo dõi số dòng của mỗi dòng với lệnh less, hãy sử dụng tùy chọn -N.

# less -N /var/log/daemon.log
Hiển thị số cho mỗi dòng trong tập tin
      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

Mặc định, cách duy nhất để thoát lệnh less là nhấn phím q. Để thay đổi hành vi này và tự động thoát khỏi tập tin khi đến cuối tập tin, sử dụng tùy chọn -e hoặc -E:

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

Để mở một tập tin tại lần xuất hiện đầu tiên của một mẫu, sử dụng cú pháp sau:

# less +/sshd /var/log/auth.log
Hiển thị chuỗi kết quả tìm kiếm đã cho trong tập tin
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)

Lệnh trên cho biết less mở tập tin auth.log tại lần xuất hiện đầu tiên của chuỗi sshd.

Để tự động thêm nội dung của một tập tin mở trong lệnh less, sử dụng tổ hợp phím Shift+f hoặc chạy less với cú pháp sau đây.

# less +F /var/log/syslog

Điều này khiến less chạy ở chế độ tương tác (trực tiếp) và hiển thị nội dung mới trên không gian chờ đợi dữ liệu mới được ghi vào tập tin. Hành vi này tương tự với lệnh tail -f.

Kết hợp với một mẫu, bạn có thể theo dõi tập tin nhật ký một cách tương tác với phím Shift+f trong khi khớp một từ khóa. Để thoát khỏi chế độ trực tiếp, chỉ cần nhấn phím Ctrl+c.

# less +/CRON /var/log/syslog

Dù bạn quyết định sử dụng more hay less, đó là lựa chọn cá nhân, hãy nhớ rằng less nhiều tính năng hơn.