Como obter um parágrafo para determinada opção de comando imediatamente?

8

Por exemplo, em vez de todo o manual apt-get, quero pular para a -fopção no prompt do terminal imediatamente, sem usar a pesquisa na página de manual.

RS
fonte
1
@M. Becerra minha pergunta é mais ampla.
RS
@Becerra Não é apenas uma questão mais ampla, mas também uma questão diferente, porque o RS deseja retornar o parágrafo inteiro de uma opção nos resultados de man, em vez de retornar uma lista confusa de linhas separadas.
Karel

Respostas:

6

O pager padrão usado por mané less. Você pode passar o padrão de pesquisa ERE (Extended Regular Expression) que lessentende diretamente a ele por LESSmeio da variável de ambiente. Caso contrário, você deve fazer o seguinte:

LESS='+/-f' man apt-get

É exatamente o mesmo que passar /-fdepois de fazer man apt-get.

Agora, isso destacaria todos os -fs na manpágina. Para pular diretamente para a opção desejada, ou seja -f, você pode usar o ERE para corresponder apenas às linhas que começam com espaços / tabulações, seguidas por -f:

LESS='+/^[[:blank:]]+-f' man apt-get

Embora isso funcione aqui, mas ainda não seja preciso para todas as páginas, isso corresponderá a qualquer coisa que comece com -fespaços / guias iniciais. Ajuste um pouco o padrão para atender às suas necessidades nesses casos.

Você pode criar uma pequena função para passar o padrão de pesquisa e a manpágina a ser procurada como argumentos, se fizer isso com frequência.

heemail
fonte
9

Digite uma barra, o que você está procurando e pressione enter. Você pulará para a primeira ocorrência. Pressione Npara ir para a próxima ocorrência e Bvoltar. Então, neste caso:

/-f <enter>
James
fonte
4
Tente adicionar alguns espaços antes do traço. Na maioria das vezes, as opções são recuados e que deve ir direto para a opção: / -f. Isso deve ignorar qualquer uso embutido de -f.
transistor1
1

Use sedpara mostrar o parágrafo inteiro de uma opção que começa com um hífen. Para mostrar o parágrafo inteiro da -fopção imediatamente executando um único comando, use:

man apt-get | sed -n '/-f,/,/^$/p'
   -f-,--no-f, -f=no or several other variations.

   -f, --fix-broken
       Fix; attempt to correct a system with broken dependencies in place.
       This option, when used with install/remove, can omit any packages
       to permit APT to deduce a likely solution. If packages are
       specified, these have to completely correct the problem. The option
       is sometimes necessary when running APT for the first time; APT
       itself does not allow broken package dependencies to exist on a
       system. It is possible that a system's dependency structure can be
       so corrupt as to require manual intervention (which usually means
       using dpkg --remove to eliminate some of the offending packages).
       Use of this option together with -m may produce an error in some
       situations. Configuration Item: APT::Get::Fix-Broken.  

Isso retorna o parágrafo inteiro da -fopção no man, apt-getmas o comando acima pode ser aprimorado, eliminando a vírgula após, -fpara torná-la mais útil da seguinte maneira:

man apt-get | sed -n '/-f/,/^$/p'

Isso retorna vários parágrafos, a maioria dos quais você não deseja ler. Ao ler as primeiras linhas dos vários parágrafos, você pode ver que deseja mostrar apenas o parágrafo que contém a -f, --fix-brokenopção. Faça o seguinte:

man apt-get | sed -n '/--fix-broken/,/^$/p'
   -f, --fix-broken
       Fix; attempt to correct a system with broken dependencies in place.
       This option, when used with install/remove, can omit any packages
       to permit APT to deduce a likely solution. If packages are
       specified, these have to completely correct the problem. The option
       is sometimes necessary when running APT for the first time; APT
       itself does not allow broken package dependencies to exist on a
       system. It is possible that a system's dependency structure can be
       so corrupt as to require manual intervention (which usually means
       using dpkg --remove to eliminate some of the offending packages).
       Use of this option together with -m may produce an error in some
       situations. Configuration Item: APT::Get::Fix-Broken. 

Isso retorna apenas a saída que você deseja ler. Esse método funciona com qualquer outra opção que comece com um hífen e também geralmente procura por opções que começam com um hífen em outros comandos além de apenas apt-get.

Mostrando informações adicionais com sed

Se a descrição de um parágrafo não fornecer informações suficientes, o comando a seguir mostrará o primeiro parágrafo igual ao comando anterior e os próximos parágrafos após ele também.

LESS='+/^[[:space:]]*-f' man apt-get  

Os resultados deste comando mostram que os próximos parágrafos não são muito interessantes, mas para algumas opções os próximos parágrafos também são interessantes. É por isso que este também é um comando útil para saber.

karel
fonte