Próbuję znaleźć polecenie, aby wyszukać wzorzec zawierający łączniki na wszystkich stronach podręcznika.
Obejrzałem man mani znalazłem te 3 opcje:
-K,--global-aproposWyszukaj 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
--regexzostanie użyta opcja.
-w,--where,--path,--locationNie wyświetlaj stron podręcznika, ale wydrukuj lokalizację źródłowych plików nroff, które zostaną sformatowane.
-S list,-s list,t--sections=listLista jest oddzieloną dwukropkami lub przecinkami listą sekcji instrukcji, które mają być wyszukiwane. Ta opcja zastępuje
$MANSECTzmienną środowiskową. (-sPisownia dotyczy zgodności z systemem V.)
Próbowałem je połączyć, aby wyszukać wzór, mark-modified-linesktó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 bashznalazłem --regexopcję, która jest opisana w następujący sposób:
--regexPokaż 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-lineswyraż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 bashstronie 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 x11perfcompzawiera ten wiersz:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
I man xditviewzawiera 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?