Para mim, less se comporta como você descreve - eu preciso usar less -X para desativar esse comportamento.
Você pode tentar usar explicitamente o " buffer de tela alternativa " que muitos terminais implementam.
Isso é usado por editores como vim / nano , de modo que ao sair, o terminal é restaurado como era antes.
Tente isto:
tput smcup
ls | less
tput rmcup
Se tput estiver indisponível, tente usar echo $'\e[?1049h' / echo $'\e[?1049l' , respectivamente.