Quais são os caracteres especiais para imprimir de um script para mover o cursor?

5

Descobri que imprimindo \r de um script, o cursor se move para o início da linha.

Qual personagem moverá o cursor uma linha acima?

Onde há uma lista desses caracteres especiais?

EDIT: Trabalhando no OSX. Além disso, \a toca a campainha.

    
por B Seven 01.01.2014 / 16:17

5 respostas

7

Se o emulador de terminal suportar sequências de escape ANSI , você pode mover o cursor para cima executando este:

echo -n -e '3[2A'

ou

ruby -e 'print "3[2A"'

Isso levará o cursor até 2 linhas. Ele funciona em gnome-terminal e xterm e muitos outros.

    
por 01.01.2014 / 18:22
8

O controle de posicionamento dependente do terminal pode ser feito com tput . Isso inclui alta iluminação básica e posicionamento do cursor. Por exemplo, para mover o cursor para a linha-10, coluna-1, você usaria tput cup 10 1 . Veja as% man_de% manpages.

    
por 01.01.2014 / 16:41
5

Esses caracteres especiais são do conjunto ASCII de 7 bits, que contém 128 caracteres em esta tabela ; notação de escape de shell não é mostrada lá, mas \r é o 14º caractere (valor decimal 13), CR (retorno de carro). O sino é o oitavo caractere (valor decimal 7). \n , conhecido em * nix e reinos derivados como a nova linha, é o 11º caractere (valor decimal 10), LF (feed de linha).

A maior parte do conjunto ASCII são caracteres alfanuméricos normais. A maioria dos "caracteres especiais" no início da tabela, na verdade, não serve para nenhum propósito hoje (a nova linha, etc., sendo exceções). Terminais compatíveis com ANSI (incluindo os mais modernos baseados em Virtual nix) usam ESC (decimal 27, octal 33) para iniciar seqüências de controle especiais ( 3... ) - algumas das quais, como Mark Plotnick aponta em sua resposta, permita o movimento vertical.

Dentro da própria tabela há VT (decimal 11), a aba vertical, mas ela se move para baixo . Não há caracteres únicos que permitam movimento ascendente.

    
por 01.01.2014 / 17:20
0

Além das respostas anteriores, você pode querer olhar para ncurses .

Ncurses is software for controlling writing to the console screen under Unix, Linux and other operating systems.

-- www.gnu.org

    
por 02.01.2014 / 02:15
-2

Para uma lista de caracteres especiais, use "man echo"

Mas mover o cursor para um alinhamento não funciona.

    
por 01.01.2014 / 16:21