Posso forçar 'man' a fazer uma correspondência de minúsculas?

10

Quando procuro por páginas de manual, a pesquisa faz distinção entre maiúsculas e minúsculas, mas apenas em letras maiúsculas. Por exemplo, x corresponderá a x e X , enquanto X corresponderá apenas a x . Esta é a versão man-db do homem, usada em sistemas derivados do fedora por padrão e disponível em outros. man man diz que o pager padrão é less -s . $LESS não está definido no ambiente, meu $PAGER é apenas less e não tenho alias por menos.

Este não é o comportamento quando invoco less sozinho.

Existe alguma maneira de forçar minúsculas x a corresponder apenas a minúsculas x ao usar man ?

    
por goldilocks 11.04.2014 / 15:33

3 respostas

3

O homem está chamando menos; o único controle no nível do homem é escolher quais opções chamar menos com.

A diferenciação de maiúsculas e minúsculas da pesquisa de Less é controlada por duas opções.

  • Se -I estiver em vigor, as pesquisas diferenciam maiúsculas de minúsculas: a ou A pode ser usado para corresponder a ambos a e A .
  • Se -i estiver em vigor, mas não -I , as pesquisas não diferenciam maiúsculas de minúsculas, mas apenas se o padrão não contiver letras maiúsculas.

Se você tornar -I uma opção padrão para Menos, todas as pesquisas não diferenciarão maiúsculas de minúsculas, mesmo nas páginas man.

O Man-db passa opções extras para o pager através da variável de ambiente LESS , que Less interpreta da mesma forma que as opções da linha de comando. A configuração é codificada em tempo de compilação e começa com -i . (O valor é "-ix8RmPm%s$PM%s$" do Man-db 2.6.2; a parte P…$ é a string de prompt.)

Se você não quer que as buscas em páginas man sejam sensíveis a maiúsculas e minúsculas, ou se você quer que elas sejam sempre insensíveis a maiúsculas e minúsculas, não há como configurar isso no próprio man-db. Você pode criar um alias para man ou um script de wrapper que manipule a variável LESS do ambiente, já que o Man-db preenche seu conteúdo para o valor atual se presente:

alias man='LESS="$LESS -I" man'

Para desativar a opção -i e, assim, tornar as pesquisas sempre diferenciam maiúsculas de minúsculas por padrão nas páginas man:

alias man='LESS="$LESS -+i" man'

Você também pode codificar um valor diferente para LESS definindo a variável de ambiente MANLESS , mas se você fizer isso, então man apenas definirá LESS para o valor de MANLESS , você perderá a linha de título personalizada ("Manual page foo(42) ") e outras vantagens (em particular, certifique-se de incluir -R para formatação em negrito e sublinhado).

    
por 13.04.2014 / 03:36
1

É assim que funciona o modo less -i (opção de linha de comando) "insensível a maiúsculas e minúsculas" (ou seja, ainda é sensível para letras maiúsculas). Como Gilles aponta, usar isso é compilado no man-db.

Além das formas indicadas em Gilles para responder à WRT definindo um alias +-i ou um personalizado MANLESS , você pode alternar a correspondência de maiúsculas e minúsculas quando a página man abrir com -i (que liga e desliga a opção ); você verá uma pequena mensagem "O caso é significativo em pesquisas" e agora x corresponde apenas a x e X corresponde apenas a X .

O man do Man-db tem uma -I , mas isso se aplica à procura da página man - por exemplo, por padrão man BASH fornecerá a página de manual bash, enquanto man -I BASH não.

    
por 11.04.2014 / 18:22
0

"Existe alguma maneira de forçar minúsculas x a corresponder apenas a minúsculas x ao usar man ?"

Aqui está uma maneira

man -Tascii manpage |less

Não sei os detalhes, mas o processamento roff está realizando a marcação e o pager parece estar correspondendo ao texto não marcado, mesmo que esteja exibindo o texto marcado.
Muito confuso, esperançosamente um nroff guru pode explicar o pipeline.

    
por 11.04.2014 / 22:33