Como os comentaristas antes de mim mencionaram, não há alternativa para chamar resize
após cada comando, se você não tiver esse comando e não quiser instalar um pacote no qual ele está ( xterm
), aqui são dois shell script POSIX que fazem o mesmo usando códigos de escape do terminal ANSI:
res() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '373[r3[999;999H3[6n38' > /dev/tty
IFS='[;R' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
res2() {
old=$(stty -g)
stty raw -echo min 0 time 5
printf '3[18t' > /dev/tty
IFS=';t' read -r _ rows cols _ < /dev/tty
stty "$old"
# echo "cols:$cols"
# echo "rows:$rows"
stty cols "$cols" rows "$rows"
}
-
res
é baseado na solução apresentada no link . Funciona da seguinte forma: -
res2
é influenciado porresize.sh
do xterm (consulte link ). Ele usa um códigoxterm
específico para obter as informações que desejamos (implementadas em muitos emuladores de terminal), consulte: ">"
BTW, no meu arquivo .profile
, você encontrará o seguinte:
%código%
de modo que o tamanho do terminal seja determinado em cada login pela linha serial (aquela que eu uso para gerenciamento), e. depois de reiniciar o dispositivo.
Veja também a idéia de rsaw nos comentários para ter a linha [ $(tty) = /dev/ttyS0 ] && res
lá Em vez disso, o redimensionamento é executado após cada comando (observe que o AFAIK nem sempre é possível no [ $(tty) = /dev/ttyS0 ] && trap res2 DEBUG
).