Como posso usar o homem sem menos?

21

Por padrão, manusa lesspara gerar texto. Como posso dizer apenas para o stdout? Meu emulador de terminal possui uma barra de rolagem e uma função de pesquisa, e eu quero usá-las em vez das teclas de seta.

destro
fonte

Respostas:

31

Na verdade, ele usa o que é especificado na variável de ambiente MANPAGERou PAGER.

Dependendo da sua manimplementação e versão, também pode haver uma opção de linha de comando para especificar o pager.

Com a implementação do man-db , uso todas as formas abaixo de trabalho:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Para defini-lo permanentemente, basta adicioná-lo ao seu ~/.bashrc(ou outro arquivo de inicialização usado pelo seu shell):

export MANPAGER=cat

Isso funciona com algumas manimplementações mais antigas também, enquanto MANOPTé específico do man-db:

export MANOPT='-P cat'

(Melhor não definir PAGERdessa maneira. Essa também é usada por muitos outros aplicativos.)

Também pode haver um arquivo de configuração global. man-db tem /etc/man_db.confou /etc/manpath.config. Lá você pode definir:

DEFINE    pager    cat

Mas, infelizmente, isso é levado em consideração apenas se nem MANPAGERnem PAGERestiver definido.

homem a trabalhar
fonte
2
Boa resposta. Re: ~/.bashrc, Você também poderia envolver a exportação em uma condicional por isso só define o pager se é o terminal / emulador apropriado: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; obviamente substitua xtermpelo emulador apropriado.
27411 Kevin
1
Na verdade, é bom e por design que o manpath.config é levado em consideração mais tarde. PAGER e MANPAGER são no nível do usuário, onde o arquivo de configuração é no nível do sistema. Se o nível do sistema tiver precedência, os usuários não poderão substituir.
Paul de Vrieze 29/10
@PauldeVrieze, você está certo MANPAGER. Usei a palavra "infelizmente", pois o comportamento também se aplica PAGER, que é uma configuração genérica (usada por muitas ferramentas) e eu preferiria que não substituísse uma configuração específica (usada por apenas uma ferramenta), mesmo que um é o nível do sistema.
manatwork
Se você deseja substituir uma configuração específica para uma única ferramenta, sempre pode fazê-lo criando um alias, uma função de shell ou um script de wrapper. Qualquer um desses itens equivaleria a PAGER=cat manalias man='PAGER=cat MANPAGER=cat man'
:,
6

Basta canalizar a saída de manpara cat?

man ls | cat   # useful use of cat
Tony
fonte
6
Observe que, dependendo da manimplementação, que 1) gera erro, 2) exibe códigos de formato troff no terminal, 3) remove toda a formatação, 4) funciona conforme o esperado.
manatwork
2
Eu nunca o vi fazer outro que 4. #
Keith Thompson
@KeithThompson O macOS manparece usar o pager definido MANPAGERmesmo quando a saída é um arquivo ou um pipe. E se o pager é less, tudo fica bom porque lessse comporta como catquando a saída é um pipe ... Mas se você usar outra coisa (como o Vim, que eu uso), não será tão bom.
Muru
1

Experimente estes comandos para gerar saída man sem um pager.

  • man ls | cat (largura fixa gerada)

  • man -P cat ls (largura variável gerada)

Eu estava em um sistema Linux GNU

Duncan
fonte
1

Outro ângulo: semelhante à resposta de Tony.

Você também pode redirecionar a saída do homem para um arquivo e visualizá-lo com o seu editor de texto favorito ou até mesmo adicionar favoritos, comentários etc.

man bash  > bashman.txt

Tenho uma cópia da página de manual do bash, bem como apenas as seções no controle de fluxo do bash e nos sinalizadores do teste do bash salvos como arquivos de texto no meu diretório bin, para que eu possa carregá-los diretamente no meu editor de texto (kate) para referência enquanto estou escrevendo scripts bash.


Aviso: dependendo do seu sistema e da página de manual, o comando acima pode resultar na formatação de informações e controle de caracteres no arquivo.

Para evitar isso, faça o sugerido em LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt
Joe
fonte
1
@Wildcard - Obrigado. Eu não sabia disso.
Joe