Sprawia, że ​​PS1 jest odświeżalny

0

Chcę zmienić monit w zależności od wyniku określonego polecenia. i na podstawie wyniku polecenia, aby dodać kolor.

przykład:
uruchom polecenie:

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

(pokaże to tylko ostatnie słowo.

Teraz, jeśli wynikiem jest „uwaga”, chcę, aby monit brzmiał:

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

więc słowo „uwaga” będzie zielone.

Jeśli jednak słowo będzie „w dół”, chcę, aby monit był w innym kolorze:

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

Chcę, aby zmiana była „w locie”, co oznacza w każdym nowym wierszu (naciśnięcie Enter) Chcę, aby monit był aktualizowany na podstawie wyniku.

Jeśli to możliwe, należy to w jakiś sposób zmienić na stałe poprzez .bashrc.

Wszelkie pomysły na to, jak to zrobić?

AlonCo
źródło

Odpowiedzi:

0

To działa dla mnie (używając 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 "\033[%s;%sm%s\033[0m" $u $c $i
)]# '
jlliagre
źródło
Czy „uwaga” i „w dół” to jedyne możliwe wartości?
jlliagre
Więc jakich kolorów oczekujesz dla innych wartości?
jlliagre
Odpowiedź zaktualizowana.
jlliagre
Odpowiedź zaktualizowana ponownie i uproszczona. Powinieneś umieścić ten kod w pliku .bashrc, co oznacza, że ​​nie powinieneś podwajać odwrotnego ukośnika \$NF.
jlliagre
Cześć, jeśli nie wstawiam podwójnego ukośnika odwrotnego, pojawia się błąd składniowy. czy jest tutaj sposób na czat? potrzebuję kilku wyjaśnień. dzięki
AlonCo
0

Będziesz musiał wykorzystać PROMPT_COMMANDzmienną, a także PS1zmienną, przedefiniowując PS1zmienną wewnątrz PROMPT_COMMAND. Pozwolę ci odnieść się do innych odpowiedzi w celu uzyskania szczegółowych informacji na temat tego, jak spełnić twoją konkretną potrzebę, ale to rozwiąże prośbę o aktualizację „w locie”. Było to wyzwanie, na które natknąłem się podczas pracy nad włączeniem statusu wyjścia do każdego nowego monitu (jeśli niezerowe).

Na przykład moje pliki konfiguracyjne bash „budują” monit PS1, który jest następnie ustawiany za pomocą następującego polecenia (gdzie zmienna ps1reprezentuje to, co chcę, aby moja PS1zmienna była):

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

Oto mój pełny .bash_promptplik w celach informacyjnych (z którego po prostu dołączam .bashrc): https://gist.github.com/austinbeam/10930268

daBeamer
źródło