Lệnh man: cách dùng và tùy chọn, số mục và tìm kiếm bằng man -k
Khi cần xem cách dùng một lệnh hay một tệp cấu hình trên máy chủ Linux, hãy mở trang hướng dẫn bằng lệnh man, còn khi không biết tên thì tìm trong phần mô tả ngắn bằng man -k. Khi tìm trang passwd trên máy chủ AlmaLinux 9 và Debian 12, Debian 12 có cả trang lệnh ở mục 1 lẫn trang định dạng tệp ở mục 5, còn AlmaLinux 9 không có trang ở mục 5.
Kết quả bên dưới được lấy trên máy chủ AlmaLinux 9.8 bằng tài khoản root và trên máy chủ Debian 12 bằng tài khoản thường. Tên máy chủ và địa chỉ kết nối trong trình mô phỏng là giá trị ví dụ.
1️⃣ Cách dùng cơ bản của lệnh man
Gõ tên lệnh sau man thì trang hướng dẫn của lệnh đó sẽ mở ra. man chuyển trang cho một chương trình phân trang (pager) để hiển thị từng màn hình, nên sau khi chạy sẽ không quay lại dấu nhắc ngay. Pager được chọn qua biến môi trường MANPAGER hoặc PAGER, và nếu cả hai đều trống thì dùng less.
Nếu chuyển kết quả qua pipe thì chỉ có văn bản được in ra, không có pager. Khi lấy 12 dòng đầu của [man ls] bằng head, dòng đầu tiên có LS(1), tiếp theo lần lượt là các phần NAME, SYNOPSIS và DESCRIPTION.
man ls | head -n 12LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci-
fied.Số 1 trong ngoặc của LS(1) ở dòng đầu tiên là số của mục chứa trang này.
Trong một trang, [Space] hiển thị màn hình tiếp theo, còn [/từ] rồi Enter dùng để tìm một từ. [n] chuyển đến vị trí tiếp theo có cùng từ đó, và [q] thoát man.
Nếu gõ một tên không tồn tại thì lỗi [No manual entry for] xuất hiện, và mã thoát là 16.
man no-such-cmd9No manual entry for no-such-cmd9echo $?16Phần EXIT STATUS của trang man mô tả 16 là giá trị khi không tìm thấy ít nhất một trong các trang, tệp hoặc từ khóa. Lỗi cách dùng là 1, nên script có thể xử lý riêng hai trường hợp.
2️⃣ Số mục của man
Khi các trang cùng tên nằm ở nhiều mục, man tìm theo thứ tự mục đã định và chỉ mở trang đầu tiên tìm thấy. Các mục được đánh số từ 1 đến 9, và những mục hay mở nhất khi làm việc trên máy chủ là mục 1 về lệnh, mục 5 về định dạng tệp và mục 8 về lệnh quản trị.
| Mục | Các trang trong mục | Ví dụ thấy trên máy chủ AlmaLinux 9.8 |
|---|---|---|
| 1 | Chương trình thực thi và lệnh shell | ls, passwd, crontab, man |
| 2 | Lời gọi hệ thống (hàm do kernel cung cấp) | |
| 3 | Hàm thư viện | |
| 4 | Tệp đặc biệt (thường nằm dưới /dev) | |
| 5 | Định dạng tệp và quy ước, ví dụ: /etc/passwd | crontab |
| 6 | Trò chơi | |
| 7 | Khác (gói macro và quy ước) | |
| 8 | Lệnh quản trị hệ thống, thường dành cho root | useradd, mandb |
| 9 | Thủ tục của kernel (không chuẩn) |
crontab có trang ở hai mục vì lệnh và định dạng tệp cấu hình mang cùng một tên. Khi kiểm tra bằng [man -f crontab], dòng của mục 1 và mục 5 cùng xuất hiện.
man -f crontabcrontab (1) - maintains crontab files for individual users
crontab (5) - files used to schedule the execution of programsChạy [man crontab] không kèm số mục sẽ mở trang lệnh crontab ở mục 1. Để xem định dạng của tệp lịch tác vụ, hãy ghi 5 trước tên.
man 5 crontab | head -n 4CRONTAB(5) File Formats CRONTAB(5)
NAME
crontab - files used to schedule the execution of programsDòng đầu tiên đổi thành CRONTAB(5) và File Formats, và dòng NAME cũng hiện mô tả tệp lịch tác vụ thay cho mô tả lệnh.
Nếu mục được chỉ định không có trang mang tên đó thì sẽ báo lỗi. Trên máy chủ AlmaLinux 9.8, khi chạy [man 5 passwd] để xem định dạng tệp /etc/passwd, lỗi báo rằng mục 5 không có trang đã xuất hiện.
man 5 passwdNo manual entry for passwd in section 5Trên máy chủ Debian 12, [man -f passwd] in ra cả dòng passwd của mục 5. Mục nào có trang còn tùy vào các tài liệu hướng dẫn được cài trên máy chủ, vì vậy hãy kiểm tra bằng [man -f] trước khi thêm số mục.
man -f passwdpasswd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password fileMục 8 chứa các lệnh quản trị chủ yếu do tài khoản root chạy, chẳng hạn useradd dùng để tạo tài khoản.
man -f useradduseradd (8) - create a new user or update default new user information3️⃣ Tùy chọn của lệnh man và tìm kiếm bằng -k, -f
[man -f] in mô tả một dòng của các trang cùng tên và hoạt động giống whatis. Trên máy chủ AlmaLinux 9.8, [man -f passwd] và [whatis passwd] in ra cùng hai dòng.
man -f passwdpasswd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commandsDòng 1ossl là trang của một lệnh OpenSSL dùng chung tên passwd.
Khi không biết tên, hãy dùng [man -k] để tìm trong tên trang và mô tả ngắn. Lệnh này hoạt động giống apropos, và từ khóa được đọc như một biểu thức chính quy.
man -k '^passwd'passwd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commands^ nghĩa là đầu dòng nên chỉ những dòng bắt đầu bằng passwd được in ra. Cũng có thể tìm bằng một từ trong phần mô tả: [man -k 'directory contents'] tìm thấy các trang dir và vdir cùng với ls.
man -k 'directory contents'dir (1) - list directory contents
ls (1) - list directory contents
vdir (1) - list directory contents[man -k] chỉ tìm trong mô tả ngắn của phần NAME nên không thể tìm trang theo tên tùy chọn hay một từ trong nội dung. [man -K], vốn tìm cả trong nội dung, đọc lần lượt mọi trang nên mất nhiều thời gian.
Nếu không có từ cần tìm thì [nothing appropriate] xuất hiện, và mã thoát là 16.
man -k no-such-word9no-such-word9: nothing appropriate.echo $?16[man -w] chỉ in vị trí của tệp nguồn mà không mở trang.
man -w ls/usr/share/man/man1/ls.1.gzman -w 5 crontab/usr/share/man/man5/crontab.5.gzHai tệp nằm trong thư mục man1 và man5 dưới /usr/share/man, và con số trong tên thư mục trùng với số mục. Tệp trang 1ossl, tìm bằng [man -w 1ossl passwd], cũng nằm trong thư mục man1, giống mục 1.
Các tùy chọn được gom vào hai tab bên dưới.
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -f, --whatis | In mô tả một dòng của các trang cùng tên. Giống whatis | |
| -k, --apropos | Tìm trong tên trang và mô tả ngắn. Giống apropos | |
| -w, --where, --path, --location | Chỉ in vị trí của tệp nguồn mà không mở trang | |
| -a, --all | In lần lượt mọi trang có tên khớp |
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -K, --global-apropos | Tìm một từ trong nội dung của mọi trang. Mất nhiều thời gian | |
| -S, -s, --sectionsdanh sách | Chỉ định các mục cần tìm và thứ tự của chúng bằng danh sách phân tách bởi dấu phẩy hoặc dấu hai chấm | |
| -P, --pagerpager | Chỉ định pager dùng để hiển thị trang. Mặc định là less | |
| -M, --manpathđường dẫn | Chỉ định đường dẫn tài liệu hướng dẫn dùng để tìm trang | |
| -L, --localelocale | Chỉ định locale dùng cho lần chạy này | |
| -l, --local-file | Hiển thị tệp được chỉ định như một trang mà không tìm trong tài liệu hướng dẫn của hệ thống | |
| -u, --update | Cập nhật bộ đệm chỉ mục của các trang đã cài | |
| -V, --version | In thông tin phiên bản |
🔲 Trình mô phỏng lệnh man
Trong trình mô phỏng bên dưới, có thể mở trang bằng [man ls] và chuyển màn hình bằng các chip [Space], [/list], [n], [q]. Trên cùng máy chủ ảo đó, có thể thêm số mục như [man 5 crontab] hoặc gõ [man -f], [man -k], [man -w].
4️⃣ Cấu trúc của trang man
Trang man được chia thành các phần có tiêu đề viết hoa. Khi chỉ lấy tiêu đề bằng grep rồi so sánh, trang ls đặt mô tả tùy chọn bên trong DESCRIPTION, còn trang crontab có phần OPTIONS riêng.
man ls | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSOman crontab | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHORTên các phần hơi khác nhau giữa các trang, và những phần hay gặp như sau.
| Phần | Nội dung |
|---|---|
| NAME | Tên và mô tả một dòng (dòng mà man -f và man -k in ra) |
| SYNOPSIS | Dạng viết của lệnh |
| DESCRIPTION | Mô tả hoạt động (trang ls đặt cả mô tả tùy chọn trong phần này) |
| OPTIONS | Mỗi tùy chọn một đoạn |
| EXIT STATUS | Ý nghĩa của mã thoát |
| FILES | Các tệp mà lệnh đọc hoặc ghi |
| SEE ALSO | Các trang nên xem thêm |
Các ký hiệu trong SYNOPSIS tuân theo quy tắc do trang man đặt ra. Phần trong ngoặc vuông có thể bỏ qua. Các tùy chọn ngăn cách bằng dấu gạch đứng (|) không thể dùng cùng nhau, và đối số có ba dấu chấm (...) có thể ghi nhiều lần.
SYNOPSIS của ls là ls [OPTION]... [FILE]..., nên cả tùy chọn lệnh lẫn đối số dòng lệnh như tên tệp đều có thể bỏ hết hoặc ghi nhiều lần.
[--help] là bản tóm tắt cách dùng do chính chương trình in ra, nên hiện thẳng trên terminal mà không qua pager. Usage ở dòng đầu của [ls --help] có cùng dạng với SYNOPSIS, và toàn bộ dài 121 dòng, ngắn hơn 245 dòng của [man ls].
ls --help | head -n 3Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.Trang man còn có những phần mà [--help] không có, như AUTHOR và SEE ALSO. Khi cần xem nhanh một tùy chọn thì dùng [--help], còn khi cần phần giải thích chia theo từng phần, như định dạng tệp cấu hình hay mã thoát, thì mở man.
🔢 FAQ & nội dung đề xuất
Lên lịch tác vụ
Linux: thiết lập crontab
Cách dùng lệnh crontab để lên lịch cho tác vụ máy chủ chạy vào thời điểm định sẵn.
Tìm vị trí
Lệnh which, whereis, locate trên Linux: 3 lệnh tìm vị trí (đường dẫn) của tệp
Các lệnh dùng để tìm xem tệp thực thi và tệp hướng dẫn của một lệnh nằm ở đường dẫn nào.
Chuyển tiếp kết quả
Chuyển hướng trong Linux (Redirection)
Luồng đầu vào chuẩn và đầu ra chuẩn dùng để chuyển kết quả của một lệnh sang tệp hoặc sang lệnh khác.
ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.