Deixe menos trabalho como gato, se apenas uma tela cheia de texto

6

Na minha máquina Debian aqui, less sempre abre a tela alternativa para mostrar coisas.

Isso é irritante, se houver apenas 2 ou 3 linhas a serem exibidas. Gostaria de less para:

  • funciona como pager, se houver mais de uma tela cheia de informações

  • e trabalhe como cat , se não houver.

Aparentemente, less tem o sinalizador -F para casos de "tela única":

-F or --quit-if-one-screen

Causes less to automatically exit if the entire file can be displayed on the first screen.

Mas no meu caso, apenas sai novamente e nenhuma informação é exibida. É mais parecido com cat /dev/null e, portanto, não é realmente útil.

Alguém tem uma ideia de como alcançar esse comportamento less ?

    
por Boldewyn 26.11.2010 / 13:55

3 respostas

4

Você pode combinar -F com -X , o que desativa a sequência de inicialização do terminfo.

export LESS=-FX

Isso tem a (des) vantagem de que less não limpa o texto exibido na saída, não importa quanto tempo o arquivo esteja.

    
por 26.11.2010 / 14:37
2

Você pode criar um pequeno script de wrapper, assim:

#!/bin/bash
if (( $(wc -l < "$1") < ${LINES:-20} ))
then
        cat "$1"
else
        less "$1"
fi

Se você criar em /usr/local/bin ou ~/bin como um arquivo chamado algo como less2 (convém usar um nome muito curto como l para facilitar a digitação) e verifique se ele é executável com chmod a+x /usr/local/bin/less2 , você pode usá-lo no lugar de less para comandos no formato less filename , ou seja, less2 filename (ou l filename ).

Isso não funcionará se você enviar a saída de outro comando por meio de less , ou se você especificar opção (s) ou vários nomes de arquivos.

Sem dúvida, será possível fazer a mesma coisa sem o arquivo de script extra, definindo uma função alias , se preferir.

    
por 26.11.2010 / 14:26
2

Como mencionado por grawity , você pode passar -F -X para conseguir isso, mas isso significa que less deixará muito texto na sua rolagem de terminal (e pode até não estar em ordem, se você pular o texto em less ). less não produz nada quando você apenas passa -F é o problema conhecido # 303 .

Em vez disso, você pode usar um script de wrapper. Para entradas lentas, como git log -Gregex , você quer:

A) Linhas a aparecer no ecrã principal à medida que entram e, em seguida, mudar para o ecrã alternativo, uma vez que é necessário efectuar a rolagem (para que o primeiro $LINES da saída apareça sempre no seu deslocamento); se assim for, vá com o segundo de as respostas de Gilles a uma pergunta semelhante .

B) linhas para aparecer na tela alternativa, mas saia da tela alternativa e imprima as linhas na tela principal se a rolagem for desnecessária (assim nenhuma saída aparecerá na sua rolagem se a rolagem for necessária); em caso afirmativo, consulte minha resposta a uma pergunta semelhante .

    
por 02.06.2015 / 13:02

Tags