Estou usando o gnome-terminal como meu console e ele respeita o scroll set vt100 região Sequência de caracteres de controle.
$ cat setscroll.sh
function min(){
if [[ $1 -le $2 ]]; then echo $1; else echo $2; fi
}
function max(){
if [[ $1 -ge $2 ]]; then echo $1; else echo $2; fi
}
function setscrollregion(){
CLR="3[2J"
SRGN="3[1;"$1"r"
echo -ne $CLR$SRGN
}
function calcline(){
set 'stty size' $1 # ;echo height=$1 width=$2 perc=$3
bline=$(( ($1 * $3 ) / 100 )) # calculate bottom line
bline=$( min $bline $1) # max is screen height
bline=$( max 5 $bline) # min is 5 lines customise as you wish
echo $bline
}
setscrollregion $(calcline $1)
Então,
$ bash ./setscroll.sh 50
definirá a região de rolagem para 50% da altura