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ć?
\$NF
.Będziesz musiał wykorzystać
PROMPT_COMMAND
zmienną, a takżePS1
zmienną, przedefiniowującPS1
zmienną wewnątrzPROMPT_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
ps1
reprezentuje to, co chcę, aby mojaPS1
zmienna była):Oto mój pełny
.bash_prompt
plik w celach informacyjnych (z którego po prostu dołączam.bashrc
): https://gist.github.com/austinbeam/10930268źródło