Tôi đang cố gắng tìm một lệnh để tìm kiếm một mẫu có chứa dấu gạch nối bên trong tất cả các trang man.
Tôi đã xem man man
và tìm thấy 3 tùy chọn sau:
-K
,--global-apropos
Tìm kiếm văn bản trong tất cả các trang hướng dẫn. Đây là một tìm kiếm vũ phu, và có thể sẽ mất một thời gian; nếu có thể, bạn nên chỉ định một phần để giảm số lượng trang cần tìm kiếm. Thuật ngữ tìm kiếm có thể là các chuỗi đơn giản (mặc định) hoặc biểu thức chính quy nếu
--regex
tùy chọn được sử dụng.
-w
,--where
,--path
,--location
Không thực sự hiển thị các trang thủ công, nhưng hãy in (các) vị trí của các tệp nroff nguồn sẽ được định dạng.
-S list
,-s list
,t--sections=list
Danh sách là danh sách các phần thủ công cụ thể theo thứ tự hoặc được phân tách bằng dấu phẩy để tìm kiếm. Tùy chọn này ghi đè
$MANSECT
biến môi trường. (Chính-s
tả là để tương thích với Hệ thống V.)
Tôi đã cố gắng kết hợp chúng để tìm kiếm mẫu mark-modified-lines
tùy chọn đọc được mô tả trong man bash
:
$ man -s1 -Kw mark-modified-lines
Nhưng nó không tìm thấy bất kỳ trang nào:
No manual entry for mark-modified-lines
Và lệnh thoát với mã 16
.
Tôi nghĩ rằng có thể cú pháp của lệnh là sai, nhưng có vẻ như không phải vậy, vì lệnh này tìm đúng 5 trang man trên hệ thống của tôi có chứa từ guitar
:
$ man -s1 -Kw guitar
/usr/share/man/man1/ffmpeg-all.1.gz
/usr/share/man/man1/ffserver-all.1.gz
/usr/share/man/man1/ffplay-all.1.gz
/usr/share/man/man1/ffmpeg-filters.1.gz
/usr/share/man/man1/ffprobe-all.1.gz
Tôi nghĩ rằng có lẽ các dấu gạch nối trong từ gây ra một vấn đề. Trong man bash
, tôi tìm thấy --regex
tùy chọn được mô tả như sau:
--regex
Hiển thị tất cả các trang với bất kỳ phần nào trong tên của chúng hoặc mô tả của chúng khớp với từng đối số trang như một biểu thức chính quy, như với
apropos(1)
. Vì thường không có cách hợp lý để chọn trang "tốt nhất" khi tìm kiếm biểu thức chính quy, tùy chọn này ngụ ý-a
.
Tôi đã cố gắng sử dụng tùy chọn này và thay thế từ này mark-modified-lines
bằng regex mark.modified.lines
, trong đó các dấu gạch nối được thay thế bằng metacharacter .
phù hợp với bất kỳ ký tự nào:
$ man -s1 -Kw --regex 'mark.modified.lines'
Nó vẫn không in bất kỳ trang nào, trong khi tôi biết rằng văn bản được viết trong bash
trang man.
Các metacharacter .
trong regex dường như được phân tích cú pháp như mong đợi, vì lệnh này:
$ man -s1 -Kw --regex 'mark.mo'
Bản in:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
Và 2 trang này ( x11perfcomp
, xditview
) đều được khớp bởi biểu thức chính quy mark.mo
. Cụ thể hơn, man x11perfcomp
chứa dòng này:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
Và man xditview
chứa dòng này:
Mark Moraes (University of Toronto)
^^^^^^^
Tuy nhiên, man -s1 -Kw --regex 'mark.mo'
không in trang bash man:
/usr/share/man/man1/bash.1.gz
Trong khi tôi mong đợi nó sẽ, vì nó chứa dòng này:
mark-modified-lines (Off)
^^^^^^^
Có thể tìm kiếm một mẫu có chứa dấu gạch nối bên trong các trang man?