Linha de status no shell do linux

3

Eu uso o Windows e o Putty para conectar remotamente (ssh) a alguns servidores linux. Eu configurei meu hardstatus em meu arquivo .screenrc para que eu possa monitorar algumas informações úteis. Mas isso funciona apenas quando estou na tela.

Eu gostaria de usar a mesma coisa fora da tela. Então, basicamente, eu quero ter uma barra de status (semelhante à barra de status da tela) quando estou em minha concha bash fora da tela.

Isso é possível? Como eu posso fazer isso? Se não, existe alguma alternativa?

PS: Meu objetivo é mostrar a hora atual e o prazo para renovar meu acesso ao servidor em uma barra de status.

    
por Alex 15.11.2014 / 16:15

2 respostas

2

Legal pergunta. Pelo que sei, isso não pode ser feito apenas com o Bash, como David Postill disse. Mas, como ele sugeriu, você poderia (ab) usar o prompt para esse propósito. Aqui está um exemplo usando seqüências de escape ANSI para obter o efeito de uma barra de status: -)

PS1='\[\e[s\e[1;1H\e[41;1m\e[K\e[33;1m\][ *** \t *** ]\[\e[0m\e[u\]\w> '

Este apenas exibe a hora atual na 'barra de status', enquanto também exibe um prompt regular. Algumas notas:

  • \e[ apresenta a maioria dos comandos especiais
  • \e[s salva a posição atual do cursor
  • \e[1;1H posiciona o cursor na linha 1, coluna 1
  • \e[...m cores de alteração (anterior e posterior)
  • \e[K limpa para o final da linha
  • \e[u restaura a posição do cursor
  • \[ e \] delimitam caracteres não imprimíveis no prompt; eles permitem que o Bash calcule o tamanho exato do prompt. Você poderia, em princípio, fazer sem eles, mas o prompt não seria atualizado corretamente em um comando de várias linhas (mas veja as desvantagens abaixo)

Não estou sugerindo que você leve essa solução a sério. Tem sérios inconvenientes:

  1. é difícil de ler e frágil
  2. a barra de status é atualizada apenas quando o prompt é atualizado; Ou seja, quando o controle retorna para o shell (como eu li sua pergunta, uma grande desvantagem)
  3. Os comandos de várias linhas
  4. não são exibidos corretamente (o cursor reinicia na primeira linha)

Mas, ainda assim, espero que gostem! :)

    
por 17.11.2014 / 09:19
0

cyberninja216:

PS1 = '[\ e [s \ e [1; 1H \ e [41; 1m \ e [K \ e [33; 1 m] [backtickhere curl ipinfo.io 2 > / dev / null | grep -m 1 '"ip"' backtickhere] [\ e [0m \ e [u] \ w > '

observe os backticks para analisar uma saída de comandos. "use para feed ao vivo"

    
por 14.05.2018 / 19:51