forkVí dụ, một trang dành cho người đàn ông nằm trong phần Gọi hệ thống có số 2:
man 2 fork
Làm thế nào để bạn thấy những gì khác là phần 2 mà không cần đến Google?
forkVí dụ, một trang dành cho người đàn ông nằm trong phần Gọi hệ thống có số 2:
man 2 fork
Làm thế nào để bạn thấy những gì khác là phần 2 mà không cần đến Google?
Câu trả lời:
Lệnh này liệt kê các tên được sắp xếp của tất cả các mục trong phần đã cho:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Nếu bạn muốn xem tên đường dẫn, hãy sử dụng:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Điều này cho biết manđể tìm kiếm một phần cho tất cả các lệnh bằng cách sử dụng mẫu ký tự đại diện *(dấu gạch chéo ngược để shell không diễn giải nó). -atìm tất cả các kết quả trùng khớp, -Win tên đường dẫn thay vì hiển thị các trang và -S 1chỉ định phần một. Thay đổi 1thành bất cứ phần nào bạn muốn tìm kiếm.
Các sedlệnh dải các phần mở rộng tên tập tin; loại bỏ nó nếu bạn muốn xem tên tập tin đầy đủ. sortsắp xếp các kết quả ( -uloại bỏ trùng lặp).
Để tái sử dụng thuận tiện, điều này xác định hàm shell Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Ví dụ, bạn có thể gọi nó như mansect 3để xem các mục trong phần ba.
[Đã thử nghiệm trên macOS.]
uniqđường ống dẫn không khắc phục được.
sort -uđể loại bỏ trùng lặp.
Để liệt kê tất cả các trang man được cài đặt từ một phần cụ thể, bạn có thể sử dụng apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Các trang thường được đặt trong /usr/share/man, nhưng kiểm tra $MANPATHvà được sắp xếp thành các phần như vậy:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Vì vậy, để liệt kê tất cả các trang 2 phần đã cài đặt, hãy làm:
ls /usr/share/man/man2/
Hoặc một cái hoàn chỉnh hơn:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
Cái thứ hai sẽ có vấn đề nếu bạn có các thư mục $MANPATHcó khoảng trắng trong tên của chúng.
Trên hầu hết các bản phân phối, bạn cũng có thể kiểm tra các trang man có sẵn bằng một công cụ gói, ví dụ như trên các bản phân phối có nguồn gốc Debian bạn có thể sử dụng apt-filenhư vậy:
apt-file search /man2/
lman 2và liệt kê tên chưa được đặt cho mỗi trang trên một dòng mới và trang chúng. Cơ thể của chức năng là:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
Tôi biết đây là một câu hỏi rất cũ, tuy nhiên tất cả các câu trả lời ở đây đều không phù hợp với tôi. Do đó, tôi đã đưa ra một lớp lót sau hoạt động trên Ubuntu 18.04 và macOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Chạy nhanh xuống:
$(man --path | tr ':' ' ')để có được các đường dẫn hiện tại của trang manfind <man paths> -type f -path '*man2*' -exec basename {} \; lấy tên tệp của tất cả các tệp thông thường trong đường dẫn mansed thoát khỏi phần mở rộng tập tinsort theo bảng chữ cái