Pergunta

Como alguns programas de editar o que está sendo exibida no terminal (para escolher aleatoriamente um exemplo, o programa 'sl')?Eu estou pensando em terminal do Linux aqui, pode acontecer em outras OS demais, eu não sei.Eu sempre pensei assim que algum texto foi apresentado, ficou lá.Como você muda-lo sem redesenhar a tela inteira?

Foi útil?

Solução

Muitos aplicativos utilizam a maldições biblioteca, ou alguns idiomas obrigatória para ele.

Para a reconfiguração em uma única linha, como atualização de informações de progresso, o caractere especial "retorno de carro", muitas vezes especificado pela seqüência de escape " ", pode retornar o cursor para o início da linha atual permitindo a saída subseqüente para substituir o que foi anteriormente escrito lá.

Outras dicas

Dependendo do terminal você enviar controle seuqences.Comum sequências são, por exemplo, esc[;H para enviar o cursor para uma posição específica (e.g.no Ansi, Xterm, Linux, VT100).No entanto, isso irá variar com o tipo de terminal ou o usuário tem ...maldições (em conjunto com o terminfo arquivos) vai envolver essa informação para você.

tente este script de shell

#!/bin/bash
i=1
while [ true ]
    do
            echo -e -n "\r $i"
            i=$((i+1))
    done

a n opções impede que a nova linha ...e a o retorno de carro ...você escreve de novo e de novo, na mesma linha - não scroling ou de modo que nunca

Se você terminar uma linha enviados para o terminal com um retorno de carro (' ') em vez de um avanço de linha (' '), ele irá mover o cursor para o início da linha atual, permitindo que o programa de impressão de texto mais por cima do que é impresso antes.Eu uso este ocasionalmente para mensagens de progresso para longas tarefas.

Se você precisar fazer mais de terminal de edição do que isso, usar em ncurses ou uma variante da mesma.

Há caracteres que pode ser enviado para o terminal que mover o cursor para trás.Em seguida, o texto pode ser substituído.

Há uma lista aqui.Observação o "mover o cursor algo" linhas.

Em NCurses é um programa multi-plataforma de biblioteca que permite a você desenhar interfaces de usuário em terminais inteligentes.

Corporal Sensível respondeu como isso é feito no nível mais baixo.Para facilitar o desenvolvimento maldições biblioteca dá um nível maior de controle do que simplesmente enviar caracteres para o terminal.

Para construir no @Corporal Sensível a resposta, existem bibliotecas disponíveis, que irá tratar de algumas dessas funcionalidades para você, tais como maldições/ncurses

Concordo com danio, em ncurses é o caminho a percorrer.Aqui está um bom tutorial:

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top