Copiei o código abaixo de alguma fonte aleatória para o meu terminal e executei:
while sleep 1;
do tput sc;
tput cup 0 $(($(tput cols)-29));
date;
tput rc;
done &
O código é mostrar um relógio de corrida no canto superior direito do terminal. O snippet funcionou muito bem e fez exatamente o que eu queria, mas agora eu só quero terminar esse loop e me livrar do relógio.
Além disso, preciso entender o código acima. Eu tenho uma idéia, como eu sei o que o tput
comando faz, mas ainda há muitos pontos que não consigo conectar.
jobs
em sua sessão para listar trabalhos ativos em segundo plano e colocá-los em primeiro plano digitandofg <job number>
. Após digitar Ctrl + C para interromper esse loop infinito. Este cenário está funcionando apenas no terminal que executa o snippet.Respostas:
Você pode executar o
jobs
comando em sua sessão para listar trabalhos em segundo plano ativos e colocá-los em primeiro plano digitandofg <job number>
. Em seguida, digite Ctrl+ Cpara interromper esse loop infinito.Este cenário está funcionando apenas no terminal que executa o snippet.
Explicação:
tput sc
- salve a posição do cursor.tput cup 0 $(($(tput cols)-29))
- mova o cursor para a posição0
do eixo Y e(count of screen columns minus 29)
do eixo X.date
- apenas imprima a data atual.tput rc
- restaura a posição do cursor.while sleep 1; ... do ... ; done
- loop com atraso de 1 segundo.Digite
help while
para saber mais sobre owhile
loop no shell e siga para man 1 tput ou tldp tput doc para saber como funciona a tput.fonte
kill %1
(ou um número diferente, se houver vários trabalhos) é uma alternativa afg
+Ctrl-C