Promovendo a atualização do PS1

0

Eu quero que meu prompt seja alterado com base na saída de um determinado comando. e com base no resultado do comando para adicionar uma cor.

exemplo:
execute o comando:

cphaprob stat | grep local | awk '{ print $NF }''

(isso mostrará apenas a última palavra.

Agora, se o resultado for "atenção", quero que o prompt seja:

PS1='[\t][\u@\h]\[\e[0;92m\][attention]\[\e[0m\]# '  

para que a palavra "atenção" seja verde.

No entanto, se a palavra estiver "inativa", quero que o prompt esteja em cores diferentes:

PS1='[\t][\u@\h]\[\e[4;91m\][Down]\[\e[0m\]# '

Eu quero que a mudança tenha um significado "on-the-fly" em cada nova linha (pressionando Enter). Eu quero que o prompt seja atualizado com base no resultado.

Se possível, isso deve de alguma forma ser permanente via .bashrc.

Alguma idéia de como fazer isso funcionar?

    
por AlonCo 16.04.2014 / 21:02

2 respostas

0

Isso funciona para mim (usando o bash 4.2.37):

PS1='[\t][\u@\h][$(i=$(cphaprob stat|grep local|awk "{print \$NF}")
u=0
case $i in
(Active|attention) c=92;;
(Down|Error) u=4; c=91;;
(Standby) c=93;;
(Ready) c=94;;
(*) c=95 ;;
esac
printf "3[%s;%sm%s3[0m" $u $c $i
)]# '
    
por 16.04.2014 / 21:43
0

Você precisará aproveitar a variável PROMPT_COMMAND , bem como a variável PS1 , redefinindo a variável PS1 dentro de PROMPT_COMMAND . Permitirei que você faça referência a outras respostas para obter informações específicas sobre como atender sua necessidade específica, mas isso resolverá a solicitação para atualizar "on-the-fly". Este foi um desafio que tive quando trabalhei com a inclusão do status de saída em cada novo prompt (se diferente de zero).

Por exemplo, meus arquivos de configuração do bash 'constroem' um prompt do PS1, que é posteriormente configurado usando o seguinte comando (onde a variável ps1 representa o que eu quero que minha variável PS1 seja):

export PROMPT_COMMAND="export PS1=\"$ps1\""

Aqui está o meu arquivo .bash_prompt completo para sua referência (que eu simplesmente incluo em .bashrc ): link

    
por 16.04.2014 / 22:41