Estou tentando encontrar um comando para procurar um padrão que contenha hífens em todas as páginas de manual.
Eu olhei man man
e encontrei estas 3 opções:
-K
,--global-apropos
Procure texto em todas as páginas de manual. Essa é uma busca por força bruta e provavelmente levará algum tempo; se puder, você deve especificar uma seção para reduzir o número de páginas que precisam ser pesquisadas. Os termos de pesquisa podem ser cadeias simples (o padrão) ou expressões regulares, se a
--regex
opção for usada.
-w
,--where
,--path
,--location
Na verdade, não exiba as páginas de manual, mas imprima os locais dos arquivos nroff de origem que seriam formatados.
-S list
,-s list
,t--sections=list
Lista é uma lista separada por vírgula ou vírgula de seções manuais específicas do pedido a serem pesquisadas. Esta opção substitui a
$MANSECT
variável de ambiente. (A-s
ortografia é para compatibilidade com o sistema V.)
Tentei combiná-los para procurar o padrão, mark-modified-lines
que é uma opção de linha de leitura 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, pois esse comando encontra corretamente as 5 páginas de manual 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 --regex
opção descrita da seguinte maneira:
--regex
Mostre todas as páginas com qualquer parte de seus nomes ou descrições que correspondam a cada argumento de página como uma expressão regular, como em
apropos(1)
. Como geralmente não há uma maneira razoável de escolher uma página "melhor" ao procurar uma expressão regular, essa opção implica-a
.
Tentei usar essa opção e substituir a palavra mark-modified-lines
pelo regex mark.modified.lines
, onde os hífens são substituídos pelo metacaractere .
que deve corresponder a qualquer caractere:
$ man -s1 -Kw --regex 'mark.modified.lines'
Ele ainda não imprime nenhuma página, enquanto eu sei que o texto está escrito na bash
página de manual.
O metacaractere .
no regex parece ser analisado conforme o esperado, pois 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 do manual do bash:
/usr/share/man/man1/bash.1.gz
Enquanto eu esperava que sim, uma vez que contém esta linha:
mark-modified-lines (Off)
^^^^^^^
É possível procurar um padrão contendo hífens nas páginas do manual?