Por que usar o rev como seu homem pager falha ao redirecioná-lo novamente?

2

Recentemente, pensei em um truque desonesto que envolve definir a variável PAGER envionment como rev como uma piada. Quando tentei ler a man page para rev com man rev , vi a página man em ordem inversa, como esperado.

Se você quiser tentar sem configurar seu pager, pode usar a opção -P em man da seguinte forma: man -P rev rev e você verá a página de manual para rev ao contrário.

O que me confunde é que você não pode simplesmente canalizar a saída por meio de rev para obter o caminho certo novamente. Eu tentei executar man -P rev rev | rev e, em vez de obter a saída da maneira correta, ela ainda está invertida.

Há uma mensagem de erro exibida da maneira correta, parece com isso:

mdoc warning: A .Bl directive has no matching .El (#58)

Suponho que isso esteja na direção correta porque ele veio de stderr e não stdout

Se você simplesmente canalizá-lo através de rev novamente, todo o texto está na direção correta, mensagem de erro e tudo.

man -P rev rev | rev | rev

Qual é a razão para esse comportamento estranho?

Estou usando o bash no terminal gnome no Ubuntu.

    
por DanJAB 16.07.2015 / 20:46

1 resposta

3

Isso ocorre porque man não usa o pager, a menos que a saída seja enviada para um terminal. Se a saída for enviada para um canal, será apenas cat da saída. E então ...

man rev | rev | rev

... e ...

man -Prev rev | rev | rev

... são equivalentes.

    
por 16.07.2015 / 20:53

Tags