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ć?

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
)]# '

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.