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.
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
?
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.
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 .