Como modificar uma determinada linha do terminal?

0

Literalmente, quero imprimir em qualquer linha exibida no terminal. Lembro que aprendemos isso na universidade, mas foi há muito tempo. Existe um comando para isso?

Assim:

___________ ___________ |blah | |blah | |bla | |blah | |randomtext | |blah | |xy | -----> |blah | |hjkl | |blah | |prompt> | |prompt> | |___________| |___________|

    
por ntj 21.09.2016 / 18:41

2 respostas

2

Você pode mover o cursor para qualquer coordenada X, Y com o comando tput cup

por exemplo

tput cup 10 3

irá levá-lo para a linha 10, coluna 3 (as coordenadas começam em 0,0 no canto superior esquerdo)

para um script simples como

clear
echo line 1
echo line 2
echo line 3
tput cup 1 5
echo another line
tput cup 10 0

resultará em uma saída semelhante a

line 1
line another line
line 3








$

(onde o $ é o seu prompt).

O primeiro comando tput move o cursor de volta para a linha anterior, permitindo que o echo sobrescreva o que já estava lá.

    
por 21.09.2016 / 18:58
1

Existem seqüências de controle xterm que oferecem uma variedade de maneiras de manipular a exibição do terminal, normalmente via o comando tput(1) ou a biblioteca curses . Ou correndo o risco de problemas de portabilidade, você pode emitir diretamente as seqüências de escape.

#!/usr/bin/env zsh
tput sc
for i in {1..10}; do
    echo -ne "\x1b[${i};${i}H\x1bKblah"
done
tput rc

O terminal também pode ser colocado no modo raw e a posição do cursor é lida. Uma boa leitura pode ser a biblioteca de linenoise veja como isso é feito.

    
por 21.09.2016 / 18:59