É possível sobrepor textos coloridos sobre o console do Linux, como nesta imagem? [fechadas]

2

Eu faço muitos scripts bash para várias necessidades. Recentemente, comecei a sentir o desejo de implementar vários indicadores sobre eles.

Seria legal durante um script automatizado de instalação autônoma saber qual operação está sendo realizada.

Além disso ... pode ser legal ter uma barra de status exibindo uma porcentagem do progresso real.

Existem no Linux (preferencialmente Debian) algumas libs e comandos como os meus mockup para manipular a saída do terminal?

(os seguintes comandos são falsos modelos apenas para fazer o leitor entender)

txtoverlay -k head -cureure "MyString no topo de todos os comandos"

ou

txtovelay -k tail -c verde -a direita "[Completação: 57%]"

ou

txtovelay -k tela -c azure -b darkblue -l 2 -t 5 -w 68 -h 50

Para gerar algo como os seguintes modelos gráficos?

Oumesmoalgumassobreposiçõesmaiscomplexas...

Basicamente,oconceitopodeseromesmoemHTMLcomalgunsDIVsnapáginaprincipalcomposition:fixed

<divid="MyDiv1" style="position:fixed; color: #00ffff; top: 0px; left: 0px; padding: 10px"></div>

<div id="MyDiv2" style="position:fixed; color: #00ff00; bottom: 0px; right: 0px; padding: 10px; text-align: right"></div>

e tempo por tempo durante o script vários comandos como:

document.getElementById("MyDiv1").innerHTML = "Step 5: Installing NET-TOOLS package in progress..<br>-------------------------"

document.getElementById("MyDiv2").innerHTML = "[Completition: 57 % ]"
    
por user3450548 20.08.2017 / 00:31

2 respostas

5

Sim, você pode fazer essas coisas. Focando apenas na questão de como colocar um texto colorido em posições específicas, uma rota direta, embora um pouco de baixo nível, é usar o utilitário tput . tput possui vários comandos que, com a ajuda do banco de dados terminfo , manipulam a tela do terminal. Por exemplo, tput cup 23 4 moverá o cursor para a linha 23, coluna 4 do seu terminal. Alguns outros exemplos:

tput ed  # clear to end of screen

tput setaf 2  # set foreground color to bright green

tput cubl  # move cursor left one space

tput rev  # turn on reverse video mode

tput sc  # save the cursor position
tput rc  # restore the cursor position

Você também pode encontrar uso para o utilitário stty . Por exemplo, se você quiser determinar as dimensões da tela atual, você pode fazer stty size .

Eu já construí um 'GUI' bruto para alguma utilidade minha que divide a tela em duas seções. A seção superior era um cabeçalho de altura fixa. A seção inferior continha a saída do comando (rolagem). Eu fiz isso usando o script Bash e tput + stty apenas. Eu descobri muito disso apenas por tentativa e erro, mas existem alguns recursos interessantes on-line como o link

Veja man tput e man 5 terminfo . Para este último, você vai querer rolar para a seção Predefined Capabilities em particular.

Pode haver abstrações de nível mais alto para a manipulação de tela baseada em terminfo , mas se você tiver requisitos relativamente simples tput é uma boa opção. (Eu acredito que tput é parte do pacote ncurses mencionado em outra resposta aqui.)

Editar: devo acrescentar, já que parece que você quer alguns desses recursos em todas as suas telas, que você pode fazer isso escrevendo um script de shell que utiliza tput como descrito acima e defina a variável de ambiente PROMPT_COMMAND nesse script para que seja invocada toda vez que seu prompt for atualizado. Se você quiser uma atualização mais frequente, precisará executar algum processo para ser executado em segundo plano enquanto ainda está sendo anexado à sua tela. Isso é mais do que tentarei morder nesta resposta.

    
por 20.08.2017 / 06:36
2

Pelo que entendi, você está procurando por uma biblioteca como ncurses ou urwid .

    
por 20.08.2017 / 03:05