A maioria dos terminais que você pode usar implementam sequências de escape para salvar e restaurar a posição do cursor. Esses são os recursos sc
(salvar cursor) e rc
(restaurar cursor) na descrição do terminal, que você pode usar via tput
(como cup
):
tput sc
tput cup 50 10
echo some stuff
echo more stuff
tput rc
No entanto, se o seu programa escrever texto suficiente para forçar a rolagem, a posição restaurada ainda estará no mesmo lugar na tela do terminal. Não se move junto com o texto rolado.
POSIX, a propósito, documenta apenas parte de tput
porque a ferramenta é na verdade parte de outro padrão, X / Open Curses. Isso está resumido na seção portabilidade da página de manual.
Voltar para a pergunta: não há sequências de escape que rastreiam a posição buffer (representando a rolagem). Para conseguir isso, seu aplicativo teria que acompanhar o que foi enviado para a tela. Resolver esse tipo de problema é o objetivo da biblioteca de maldições. Em um aplicativo de linha de comando simples, não há muito o que você pode fazer.