Quando eu grep a página de manual do comando find para corresponde a type, ele retorna muitos resultados de pesquisa que eu não quero. Em vez disso, quero usar um comando que retorna apenas os resultados da pesquisa para -type.

O comando man find | grep -type não funciona. Ele retorna:

grep: invalid option -- "t" 

Comentários

  • Você deseja apenas as linhas individuais da página de manual formatada que contêm a string -type ou deseja, digamos, o parágrafo inteiro ou dois que descrevem o que -type faz?
  • Eu quero saber como fazer das duas maneiras, grepping pelas linhas individuais que contêm a string -type seria o suficiente para a forma como normalmente procuro nas páginas de manual, porém retornando o parágrafo inteiro ou dois que descrevem o que -type faz seria muito útil para fazer pelo menos uma vez.
  • A propósito, se a visualização de uma página da web for uma alternativa, Idan Kamara em explainshell.com fez um ótimo trabalho ao extrair as partes das páginas de manual que descrevem as opções de comando. Consulte, por exemplo, explainshell.com/explain?cmd=find+-type+f para ver exatamente o que -type opção sim.

Resposta

Se você quiser usar grep para um padrão que comece com um hífen, use -- antes do padrão que você especificar.

man find | grep -- -type 

Se quiser mais informações, por exemplo, toda a seção que descreve uma opção , você poderia tentar usar Sed:

$ man find | sed -n "/-mindepth/,/^$/p" -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments. 

No entanto, isso não funcionará para todas as opções que você possa pesquisar. Por exemplo :

$ man find | sed -n "/^[[:space:]]*-type/,/^$/p" -type c File is of type c: 

Não é muito útil. Pior, para algumas opções, você pode ser induzido a pensar que “leria todo o texto sobre a opção na verdade” t. Por exemplo, pesquisar -delete omite o AVISO muito importante contido como um segundo parágrafo sob esse título.


Meu recomendação é usar uma chamada padrão para man com a LESS variável de ambiente definida. Eu o uso com bastante frequência em minhas respostas neste site.

LESS="+/^[[:space:]]*-type" man find 

Para saber mais sobre como isso funciona, consulte:

LESS="+/^[[:space:]]*LESS " man less LESS="+/\+cmd" man less LESS="+/\/" man less 

Se você deseja apenas encontrar a opção de forma rápida e interativa na página de manual, aprenda a usar os recursos de pesquisa do less“. E veja também:

Comentários

  • Obrigado por postar. Os comandos em sua resposta retornaram os resultados que eu estava procurando. Aceitarei uma resposta depois de um ou dois dias, então por favor, seja paciente.
  • @karel, sem problemas, eu ' sou muito paciente. 🙂 No entanto, um pouco intrigado: sei que você pode ' t começar uma recompensa por uma pergunta por dois dias, mas acredito que o limite de tempo antes de você aceitar uma resposta é de apenas 15 minutos ou mais.
  • man find | sed -n '/-type/,/^$/p' dá muito mais do que o que você postou corresponderá a -type em qualquer lugar da linha … estou trabalhando em um pequeno script para pesquisar man ou help (for builtin) e atualmente usando awk que ainda tem algumas peculiaridades para resolver. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" onde arg seria -type em neste caso
  • BTW, @Sundeep, você pode tentar analisar os arquivos troff subjacentes contendo as informações da página de manual original com informações de formato, em vez da saída de texto do comando man.
  • @Sundeep, aqui ' é o ponto de partida para você . (Certifique-se de seguir o link dessa resposta.) Há ' m MUITO para saber sobre troff. Me dê um ping no chat quando terminar de mergulhar na toca do coelho 🙂

Resposta

Ou direcione para less e feed que um termo de pesquisa:

man 1 find | less -p " -type" 

(Isso pode falhar dependendo exatamente do que less é feed, por exemplo, se -type foi colocado em negrito com backspaces.)

Comentários

  • Pipe-o em col -bx primeiro.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *