Estou tentando encontrar um comando para procurar um padrão que contenha hifens dentro de todas as páginas do manual.
Eu olhei para man man e encontrei estas três opções:
-K, --global-apropos
Search for text in all manual pages. This is a brute-force search, and is likely to take some time;
if you can, you should specify a section to reduce the number of pages that need to be searched.
Search terms may be simple strings (the default), or regular expressions if the --regex option is
used.
-w, --where, --path, --location
Don't actually display the manual pages, but do print the location(s) of the source nroff files that
would be formatted.
-S list, -s list, t--sections=list
List is a colon- or comma-separated list of order specific manual sections to search. This option
overrides the $MANSECT environment variable. (The -s spelling is for compatibility with System V.)
Eu tentei combiná-los para pesquisar o padrão mark-modified-lines , que é uma opção readline descrita em man bash :
$ man -s1 -Kw mark-modified-lines
Mas não encontra nenhuma página:
No manual entry for mark-modified-lines
E o comando sai com o código 16 .
Eu pensei que talvez a sintaxe do comando estivesse errada, mas não parece, já que este comando encontra corretamente as 5 páginas man no meu sistema que contém a palavra 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
Eu pensei que talvez os hífens na palavra causassem um problema.
Em man bash , encontrei a opção --regex , que é descrita da seguinte forma:
--regex
Show all pages with any part of either their names or their descriptions matching each page argument
as a regular expression, as with apropos(1). Since there is usually no reasonable way to pick a
"best" page when searching for a regular expression, this option implies -a.
Eu tentei usar essa opção e substituir a palavra mark-modified-lines pelo regex mark.modified.lines , em que os próprios hífens são substituídos pelo metacaractere . , que deve corresponder a qualquer caractere:
$ man -s1 -Kw --regex 'mark.modified.lines'
Ainda não imprime nenhuma página, embora eu saiba que o texto está escrito na página bash man.
O metacaractere . na expressão regular parece ser analisado como esperado, já que este comando:
$ man -s1 -Kw --regex 'mark.mo'
Impressões:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
E essas duas páginas de manual ( x11perfcomp , xditview ) são correspondidas pelo regex mark.mo .
Mais especificamente, man x11perfcomp contém esta linha:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
E man xditview contém esta linha:
Mark Moraes (University of Toronto)
^^^^^^^
No entanto, man -s1 -Kw --regex 'mark.mo' não imprime a página man bash:
/usr/share/man/man1/bash.1.gz
Enquanto esperava, já que contém esta linha:
mark-modified-lines (Off)
^^^^^^^
É possível procurar por um padrão contendo hífens dentro das páginas man?