Próbuję znaleźć polecenie, aby wyszukać wzorzec zawierający łączniki na wszystkich stronach podręcznika.
Obejrzałem man man
i znalazłem te 3 opcje:
-K
,--global-apropos
Wyszukaj tekst na wszystkich stronach podręcznika. Jest to poszukiwanie brutalnej siły i prawdopodobnie zajmie to trochę czasu; jeśli możesz, powinieneś określić sekcję, aby zmniejszyć liczbę stron, które należy przeszukać. Wyszukiwane hasła mogą być prostymi ciągami (domyślnie) lub wyrażeniami regularnymi, jeśli
--regex
zostanie użyta opcja.
-w
,--where
,--path
,--location
Nie wyświetlaj stron podręcznika, ale wydrukuj lokalizację źródłowych plików nroff, które zostaną sformatowane.
-S list
,-s list
,t--sections=list
Lista jest oddzieloną dwukropkami lub przecinkami listą sekcji instrukcji, które mają być wyszukiwane. Ta opcja zastępuje
$MANSECT
zmienną środowiskową. (-s
Pisownia dotyczy zgodności z systemem V.)
Próbowałem je połączyć, aby wyszukać wzór, mark-modified-lines
który jest opcją readline opisaną w man bash
:
$ man -s1 -Kw mark-modified-lines
Ale nie znajduje żadnej strony:
No manual entry for mark-modified-lines
Polecenie kończy się wraz z kodem 16
.
Pomyślałem, że może składnia polecenia jest niepoprawna, ale wydaje się, że tak nie jest, ponieważ to polecenie poprawnie odnajduje 5 stron podręcznika w moim systemie, które zawierają słowo 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
Pomyślałem, że może myślniki w tym słowie powodują problem. W man bash
znalazłem --regex
opcję, która jest opisana w następujący sposób:
--regex
Pokaż wszystkie strony z dowolną częścią ich nazw lub opisów pasujących do każdego argumentu strony jako wyrażenie regularne, jak w przypadku
apropos(1)
. Ponieważ zazwyczaj nie ma rozsądnego sposobu wybrania „najlepszej” strony podczas wyszukiwania wyrażenia regularnego, ta opcja implikuje-a
.
Próbowałem użyć tej opcji i zastąpić słowo mark-modified-lines
wyrażeniem regularnym mark.modified.lines
, gdzie myślniki są zastępowane metaznakiem, .
który powinien pasować do dowolnego znaku:
$ man -s1 -Kw --regex 'mark.modified.lines'
Nadal nie drukuje żadnej strony, podczas gdy wiem, że tekst jest zapisany na bash
stronie podręcznika .
Metaznak .
w wyrażeniu regularnym wydaje się być analizowany zgodnie z oczekiwaniami, ponieważ to polecenie:
$ man -s1 -Kw --regex 'mark.mo'
Wydruki:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
I te 2 strony ( x11perfcomp
, xditview
) są dopasowane do wyrażenia regularnego mark.mo
. W szczególności man x11perfcomp
zawiera ten wiersz:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
I man xditview
zawiera tę linię:
Mark Moraes (University of Toronto)
^^^^^^^
Jednak man -s1 -Kw --regex 'mark.mo'
nie drukuje strony podręcznika bash:
/usr/share/man/man1/bash.1.gz
Oczekiwałem, że tak, ponieważ zawiera ten wiersz:
mark-modified-lines (Off)
^^^^^^^
Czy można wyszukać wzorzec zawierający łączniki wewnątrz stron podręcznika?