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?