Como posso listar todas as páginas man que possuem determinado texto sem exibir o conteúdo? [duplicado]

3

Eu gostaria de procurar por uma determinada string em todas as páginas do manual do sistema, mas eu só quero obter uma lista das páginas man onde este texto aparece. As duas primeiras páginas de resultados que o Google retornou não fornecem a resposta que eu estou procurando, se é que existe essa resposta.

Deixe-me explicar:

Gostaria de ver todas as páginas man onde a palavra hairpin aparece. Eu prossigo para digitar man -K hairpin e o conteúdo que aparece é semelhante a eu ter digitado man nmcli . Quando eu saio dessa página man via q , o seguinte aparece na minha tela:

--Man-- next: bridge(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]

A partir daqui, eu posso continuamente digitar Ctrl + D e eventualmente retornar ao prompt de comando com o seguinte exibido acima do prompt:

--Man-- next: bridge(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: lldptool-evb22(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: systemd.network(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: nm-settings(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: nm-settings-ifcfg-rh(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: systemd.directives(7) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]

O que eu estou perguntando é, é possível obter uma listagem do man pages onde hairpin aparece como abaixo?:

man -<some-option> -K hairpin
nmcli(1)
bridge(8)
lldptool-evb22(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)

Editar:
A pesquisa no Google usando uma frase nem sempre retorna os resultados nos quais a consulta específica é endereçada. Este é obviamente o caso para esta questão, como apontado por vários que é de fato uma duplicata.

No entanto, seria melhor não excluí-lo, pois mostra a saída específica retornada nos sistemas Ubuntu. Um usuário no Ubuntu pode se beneficiar desta questão.

Editar 2:
A pesquisa por skip (Ctrl-D) agora tem essa pergunta na primeira página dos resultados do Google, onde anteriormente nada foi retornado!

    
por AnthonyK 27.03.2016 / 14:32

1 resposta

6

Você pode usar a opção -w :

   -w, --where, --path, --location
          Don't actually display the manual pages, but do print the  loca‐
          tion(s) of the source nroff files that would be formatted.

Isso retorna quase o que você pediu:

$ man -wK hairpin
/usr/share/man/man1/nmcli.1.gz
/usr/share/man/man8/ip-link.8.gz
/usr/share/man/man8/bridge.8.gz
/usr/share/man/man5/systemd.network.5.gz
/usr/share/man/man5/nm-settings.5.gz
/usr/share/man/man5/nm-settings-ifcfg-rh.5.gz
/usr/share/man/man7/systemd.directives.7.gz

Se isso não for suficiente, você pode analisar a forma:

$ man -wK hairpin | perl -pe 's#.*/([^/]+)\.(\d+)\.gz#$1($2)#'
nmcli(1)
ip-link(8)
bridge(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)

Finalmente, você pode fazer isso em uma função. Adicione esta linha ao arquivo de inicialização do seu shell ( ~/.bashrc , por exemplo):

function sman(){ man -wK "$@" | perl -pe 's#.*/([^/]+)\.(\d+)\.gz#$1($2)#'; }

Depois, você pode executar:

$ sman hairpin
nmcli(1)
ip-link(8)
bridge(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)
    
por 27.03.2016 / 14:56

Tags