Como pular para um cabeçalho específico em uma página de manual?

9

Exemplo: ssh_config

Eu configurei um tipo de arquivo no vim para isso. Quero que o programa de ajuda seja

man

Claro que isso não funciona, se eu estiver com uma palavra, digamos

ServerAliveCountMax

Eu recebo um erro, já que não há um pager man para ServerAliveCountMax, ele está dentro da página de manual do ssh_config.

Existe alguma maneira de, a partir da linha de comando, pular para uma string ou executar algum tipo de comando dentro do homem? Muito parecido com informações, na verdade:

info screen Miscellaneous

me levará para a seção Diversos da página de informações das telas.

Isso é possível com o homem? Mesmo executando uma pesquisa serviria ...

EDIT: Estou usando o OSX 10.6.5. com o homem padrão (/ usr / bin / man)

EDIT: Eu falo um pouco de dialeto;), então fui levado à resposta correta:

man -P 'less -p PATTERN' ssh_config  

É a chamada no OSX / * BSD parece.

chiggsy
fonte

Respostas:

11

Na linha de comando do GNU man:

man --pager='less -p ^ENVIRONMENT' man

ou para BSD man:

man -P 'less -p ^ENVIRONMENT' man

pulará para o cabeçalho "AMBIENTE" da página de manual de man.

Aqui está uma função útil:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Exemplos:

Use normalmente:

mans bash

Vá para o cabeçalho "DESCRIÇÃO":

mans ^DESCRIPTION bash

Vá para o cabeçalho "DESCRIÇÃO" de cada página de manual em sucessão (pressione qe Enterpara ir para a próxima):

mans ^DESCRIPTION bash ksh zsh

Vá para o subtítulo "Expansão de parâmetros" (você pode procurar qualquer string usando expressões regulares):

mans '^ *Parameter Expansion' bash

Pesquise o regex mais recente que você usou em Menos:

mans '' bash

A correspondência que você pesquisou não será destacada. Se você preferir, basta remover o -Gdas opções de less.

Esta função não tenta manipular os outros argumentos e opções que mansuportam.

Pausado até novo aviso.
fonte
promissor, editei minha pergunta, vejo que você executou usando macports ou linux, tenho uma opção -P na lista de opções de estilo BSD de baixa qualidade ... tentando isso.
chiggsy
Obrigado, entendi, mas obrigado novamente! BAH, não posso upvote sua nova resposta novamente :(
chiggsy
@Chiggsy: Eu tomo o que -Pfuncionou. Se assim for, vou adicioná-lo à minha resposta.
Pausado até novo aviso.
Para o registro, votei na sua resposta original. Estava completamente correto. Sua edição, não foi possível votar. Eu queria ...
chiggsy 29/11
@Chiggsy: Devo adicionar o -Pestilo BSD à minha resposta para referência futura?
Pausado até novo aviso.
2

Você pode usar a PAGERvariável para esta execução para evitar problemas de compatibilidade com BSD / GNU.

Use "aspas se o título da seção contiver espaços:

PAGER='less -p ^"ENVIRONMENT"' man man

user503963
fonte
1

/em menos fará uma pesquisa direta e ?fará uma pesquisa reversa. Pressione hpara ver uma lista completa.

Ignacio Vazquez-Abrams
fonte
Veja meu comentário acima e, na verdade, minha pergunta.
chiggsy
1

No man, você pode digitar /seguido de um padrão para corresponder, por exemplo, para encontrar a seção DEFAULT KEY BINDINGS da página de manual da tela.

/^DEFAULT KEY BINDINGS
user9517
fonte
Sim. Isso é verdade, mas você precisa estar no homem para fazer isso. Eu quero ir do shell para o mesmo em uma etapa.
chiggsy
1

Eu uso um truque simples para pular relativamente rápido entre as seções nas páginas de manual: bato /^[A-Z]e depois pressiono ne Npulo para frente e para trás.

O regex de pesquisa utiliza a estrutura básica das páginas de manual típicas - As seções principais são escritas em letras maiúsculas e iniciam uma linha sem recuo, devendo aparecer no início das linhas.

Doron Behar
fonte
1

Eu não gosto da solução --pager/ -P, porque manpode ser usado, mas não pode ser chamado diretamente (por exemplo, quando você usa git help ...). Portanto, usar um envvar é mais flexível. Mas acho que usar PAGER='less ...meio redundante, porque lessgeralmente é o pager padrão de qualquer maneira. Você pode usar o LESSenvvar para passar parâmetros diretamente para less. Isso também tem menos problemas de cotação. Por exemplo, isso irá pular corretamente para a seção correta, mesmo que tenha um espaço nela:

LESS="-p file system" git help glossary
David Ongaro
fonte
1
Até o topo com esta resposta! Obrigado :)
Patryk Obara