Monday, 23 March 2015

man + man = men

Với người mới sử dụng UNIX-like OS, man là một thứ khá dài dòng, khó đọc, khó hiểu.
Bài viết này sẽ mang ``man`` đến gần bạn hơn: man + man = (vodka) men

$ whatis man
man (1)              - an interface to the on-line reference manuals
man(1) là chương trình để đọc các file manual (manpage)

1. sections
Các manpage được phân thành 8 sections khác nhau, sections thường gặp nhất là
1 2 3 5 và 8 (fibonacci?!!!)
Khi thấy viết login(1) login(3), chúng ám chỉ chương trình login và function login.
Người dùng bình thường sẽ chỉ gõ ``man caulenh`` và nó thường trả về man 1,
để chỉ rõ section muốn dùng, thêm số section cần mở, vd ``man 3 login`` (nếu máy bạn chưa cài gói  ``manpages-dev`` câu lệnh man trên sẽ báo lỗi).
# apt-get install -y manpages-dev
...
Setting up manpages-dev (3.35-0.1ubuntu1) ...
Để liệt kê tất cả các manpage chứa 1 từ khoá, sử dụng man -k
# man -k ^login # dấu ^ là regex ám chỉ tên manpage hoặc phần mô tả bắt đầu bằng từ ``login``
faillog (5)          - login failure logging file
login (1)            - begin session on the system
login (3)            - write utmp and wtmp entries
login.defs (5)       - shadow password suite configuration
login_tty (3)        - tty utility functions
utmp (5)             - login records
utmpx (5)            - login records
wtmp (5)             - login records

Danh sách các sections:
       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages  and  conventions), e.g.
           man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]

2. Cấu tạo của 1 file man
gồm nhiều sections (không nên nhầm với section ở 1 - nên hiểu là các manpage được xếp vào 8 nhóm, và trong mỗi manpage chia thành nhiều mục nhỏ).

Name:
mô tả ngắn gọn về chương trình, thường chỉ trong 1 dòng

Synopsis:
liệt kê tất cả các nhóm syntax của câu lệnh / function
Ví dụ với grep:

SYNOPSIS

       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

grep có 2 mẫu nhóm  câu lệnh mà nó có thể thực hiện.
OPTIONS, PATTERN, FILE thường được mô tả chi tiết ở phần dưới của manpage.

Description:
mô tả chi tiết hơn về chương trình.

Options:
mô tả chi tiết về từng option có thể sử dụng với câu lệnh.

Example:
vài ví dụ về sử dụng câu lệnh

...
Danh sách các section name phổ biến:

NAME,  SYNOPSIS,  CONFIGURATION, DESCRIPTION,  OPTIONS,
EXIT STATUS, RETURN VALUE, ERRORS, ENVIRONMENT, FILES,
VERSIONS, CONFORMING TO,  NOTES,  BUGS,  EXAMPLE,  AUTHORS,  and SEE ALSO.

3. Đọc man online
Rất nhiều trang hỗ trợ đọc man online:

Khi trở thành sysadmin, bạn sẽ luôn là một người dùng man thường xuyên. Tỷ lệ thời gian sử dụng manpage thay vì google sẽ tăng dần theo thời gian và trình độ đọc man.

A half of a man is not a man,
two man-s make men.
Hết.