Por que os pressionamentos de teclas em "less" / "more" às vezes exigem um ENTER, quando eu uso um pipe?

2

Adorei o pipe para alimentar a saída de texto longo em less (ou more ) para torná-lo mais legível. É apenas no Ubuntu que eu observei um comportamento incomum: Às vezes, em menos pressionamentos de tecla não são processados imediatamente. É como se eu tivesse que "confirmá-los" com <ENTER> . Por exemplo, menos aberturas, o texto é exibido, eu bato <SPACE> (nada acontece), eu bato <ENTER> (a página rola para baixo agora). Isso é muito chato, pois torna-se menos inutilizável, porque também atrapalha a saída do terminal.

Isso não acontece com todos os comandos canalizados. Um exemplo é:

php --rc PDO | less

Eu nunca vi isso acontecer em nenhuma outra distribuição Linux.

    
por Michael Härtl 24.07.2011 / 17:25

1 resposta

3

Eu tenho lutado com esse problema durante toda a tarde e, depois de encontrar essa pergunta e ler várias páginas de manual, tive um pouco de ondas cerebrais. Acontece que redirecionar STDIN para /dev/null age como uma solução alternativa e retorna a funcionalidade "normal" para less :

php --rc PDO < /dev/null | less

ou

cat /dev/null | php --rc PDO | less

É, é claro, um problema horrível de uma solução alternativa, e eu não tenho conhecimento suficiente de canais e redirecionamento de fluxo no Bash para realmente entender o que causa o problema ou por que isso corrige isso, mas percebi que postar isso era melhor do que deixar essa questão totalmente sem resposta. Espero que alguém mais experiente do que eu possa lançar alguma luz sobre isso - idealmente com uma correção mais realista.

Meu único palpite é que php está recebendo STDIN em vez de less quando você digita comandos em less , mas fico perplexo sobre por que esse comportamento é visto apenas no Ubuntu (confirmei que php --rc PDO | less funciona bem no Sabayon, no CentOS e no Debian, além de invadir várias instalações diferentes do Ubuntu, incluindo aquelas atualizadas para o 11.10).

Atualizando para incluir alguns resultados de pesquisa relevantes que encontrei. Acontece que é um problema com a compilação do Ubuntu de php-cli , por isso não deve afetar nenhum outro comando.

por Aziraphale 02.11.2011 / 17:08