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:
- é difícil de ler e frágil
- 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) Os comandos de várias linhas
- não são exibidos corretamente (o cursor reinicia na primeira linha)
Mas, ainda assim, espero que gostem! :)