É possível alterar o PS1 periodicamente por um script em segundo plano?

1

Acabei de encontrar a variável PS1 (por isso estou longe de ser um especialista). É possível alterar o prompt simplesmente alterando o valor dessa variável, por exemplo:

PS1="\h"
hostname as Prompt
PS1="\j"
numbers of current jobs as Prompt
PS1="\t"
current time as Prompt
PS!="\j running on \h :"
or more complex string with many substitutions

Agora, como há algo como um processo em segundo plano que não ocupa o shell, pensei se era possível escrever um script que alterasse o valor de PS1 a cada 5 segundos, uma vez que poderia estar sendo executado em tempo integral em segundo plano.

Pseudo-Script:

Repeat

    {
    PS1="\j jobs"
    sleep 5 seconds
    PS1="time: \t"
    sleep 5 seconds
    PS1="Command History: \!"
    sleep 5 seconds
    }

Se for possível, como você o implementaria no script de shell bash?

    
por Abdul Al Hazred 31.03.2015 / 19:37

2 respostas

2

Nenhuma das shells comuns unix (bash, [pd] ksh, [t] csh) tem seu próprio análogo interno ao cron para executar tarefas de background automáticas como você desejar.

Mas, mesmo que tenham, depois que você executar um comando e ele voltar ao prompt, essa saída de caractere para mostrar o prompt é estática, não dinâmica. Se você sentasse lá e assistisse, ele não passaria pelas suas alternativas do PS1 a cada 5 segundos como você está pensando. Você não verá um novo prompt até que você pressione Enter ou execute outro comando.

No entanto, você pode conseguir o que está procurando usando a tela GNU, que possui recursos de "barra de tarefas". Tente começar com isso .

    
por 31.03.2015 / 20:33
2

Eu não acho que seja possível, mesmo se você incorporar o pseudo-código acima em um script de shell, porque em cada invocação do script de shell, ele irá iniciar seu próprio sub-shell onde isso acontecerá e não onde você quer (seu shell principal). Mesmo se você começar em segundo plano. (script.sh &)

    
por 31.03.2015 / 20:59