fork
Ví 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?
fork
Ví 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ó). -a
tìm tất cả các kết quả trùng khớp, -W
in tên đường dẫn thay vì hiển thị các trang và -S 1
chỉ định phần một. Thay đổi 1
thành bất cứ phần nào bạn muốn tìm kiếm.
Các sed
lệ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 đủ. sort
sắp xếp các kết quả ( -u
loạ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 $MANPATH
và đượ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 $MANPATH
có 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-file
như vậy:
apt-file search /man2/
lman 2
và 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