Há uma seqüência de escape para terminais ECMA-48 (vt100-ish) que restringe a rolagem para um subconjunto de linhas:
CSI top ; bottom r
Aqui está uma demonstração
# Start with the screen clean and cursor on line 1
clear
# print the non-scrolling banner line
echo Hello world
# set up the scrolling region to lines 2 through 11 and position the
# cursor at line 2
echo -n '^[[2;11r^[[2H'
# Run a command that will produce more than 10 lines, with a slight delay
# so it doesn't happen so fast you can't see it scrolling
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
# Restore normal scrolling and put cursor on line 12
echo -n '^[[r^[[12H'
Observação: todas as instâncias de ^[
acima devem ser caracteres de escape reais no script. No vi, por exemplo, eles são inseridos no modo de inserção com Ctrl V seguido por Esc .