Veja um trecho relevante da less
'FAQ :
Can less leave the screen alone when it quits?
When less starts, it sends the "ti" termcap string to the terminal, and when it quits, it sends the "te" string. Exactly what the "te" string does depends on the system you are using, the type of terminal, and your version of termcap. On some systems, it does nothing; on others it restores the screen to the state it was in when less started, thus erasing from the screen the last page of the file which less was viewing.
If you don't like the behavior of "te" on your system, you can disable the sending of the "ti" and "te" strings by invoking less with the -X option. Unfortunately, this sometimes has other side effects, because the "ti"/"te" strings might do other things that are required. For example, on some terminals, disabling "ti" and "te" causes arrow keys to cease to function.
If you want "te" to do something different (for example, restore the screen if it's not doing that already), you'll have to figure out how to change the termcap or terminfo for your terminal on your system. Unfortunately, this is done differently on different systems, so you'll have to check the documentation for your system.
A pesquisa leva às capacidades de termcap do "ti" e "te" sendo nomeadas "smcup" e "rmcup" no terminfo, que é um termo mais moderno equivalente.
Você pode ver como seu terminal ( $TERM
, provavelmente xterm
) está configurado com:
infocmp -1 # which will print out capabilites one per line
Você pode decifrar o significado das sequências com a ajuda de uma referência dos caracteres de controle do VT100 .
Se você remover os recursos "smcup" e "rmcup" do seu terminal:
infocmp -1 | sed -r '/[sr]mcup.*/d' > new-terminfo-for-$TERM
e, em seguida, deixe a biblioteca terminfo saber que esta é a nova especificação de capacidade preferida para $ TERM,
tic new-terminfo-for-$TERM
# you reverse this with 'rm -ri ~/.terminfo'
você notará que a tela alternativa less
' não está mais limpa (porque nunca foi inserida). Mas o mouse não funciona mais .
Se você mexer com sequências de caracteres de controle "rmcup" e descobrir, por favor me avise!
Atualização:
Uma alternativa de trabalho é envolver menos como uma função que executa cat quando o arquivo se ajusta à altura do terminal (coloque isso em seu .bashrc ):
less () {
# When single file argument, and file small enough, cat it
if [ $# = 1 ] && [ -f "$1" ] && [ $(wc -l "$1" | cut -d' ' -f1) -le $((${LINES:-0} - 3)) ]; then
cat "$@"
else
command less "$@"
fi
}