Você pode usar a seguinte função para extrair a posição atual do cursor em uma matriz simples:
extract_current_cursor_position () {
export
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0
echo -en "3[6n" > /dev/tty
IFS=';' read -r -d R -a pos
stty $oldstty
eval "[0]=$((${pos[0]:2} - 2))"
eval "[1]=$((${pos[1]} - 1))"
}
(a origem do código usado nesta função foi obtida e adaptada de esta resposta )
Agora, por exemplo, para salvar a posição atual do cursor em pos1
, use:
extract_current_cursor_position pos1
Para salvar a posição atual do cursor em pos2
, use:
extract_current_cursor_position pos2
Para ver as posições do cursor salvas em pos1
e pos2
, você pode usar:
echo ${pos1[0]} ${pos1[1]}
echo ${pos2[0]} ${pos2[1]}
Para mover / restaurar a posição do cursor para pos1
, você precisa usar:
tput cup ${pos1[0]} ${pos1[1]}
Para mover / restaurar a posição do cursor para pos2
, você precisa usar:
tput cup ${pos2[0]} ${pos2[1]}