Вопрос: Обеспечение быстрого обновления PS1


Я хочу, чтобы мое приглашение было изменено на основе вывода определенной команды. и на основе результата команды добавить цвет.

пример:
выполните команду:

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

(это покажет только последнее слово.

Теперь, если результатом является «внимание», я хочу, чтобы приглашение было:

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

поэтому слово «внимание» будет зеленым.

Однако, если слово будет «вниз», я хочу, чтобы приглашение было разного цвета:

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

Я хочу, чтобы изменение было «на лету», что означает каждую новую строку (нажатие Enter). Я хочу, чтобы подсказка обновлялась на основе результата.

Если возможно, это должно каким-то образом стать постоянным через .bashrc.

Любые идеи о том, как заставить его работать?


0
2018-04-16 19:02


Источник




Ответы:


Это работает для меня (используя 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
)]# '

0
2018-04-16 19:43



Возможны ли значения «внимание» и «вниз»? - jlliagre
Итак, какие цвета вы ожидаете от других ценностей? - jlliagre
Ответ обновлен. - jlliagre
Ответ обновляется снова и упрощается. Вы должны поместить этот код так, как есть в вашем .bashrc, то есть вы не должны удваивать обратную косую черту в \$NF, - jlliagre
Привет, Если я не ставил двойную обратную косую черту, я получаю синтаксическую ошибку. есть ли способ поболтать здесь? Мне нужно немного объяснений. благодаря - AlonCo


Вам нужно будет использовать PROMPT_COMMAND переменной, а также PS1 переменная, переопределяющая PS1 переменная внутри PROMPT_COMMAND, Я позволю вам ссылаться на другие ответы на конкретные вопросы о том, как выполнить ваши конкретные потребности, но это решит запрос на обновление «на лету». Это была проблема, с которой я столкнулся при работе, включая статус выхода в каждом новом приглашении (если не ноль).

Например, мои конфигурационные файлы bash «строят» приглашение PS1, которое затем устанавливается с использованием следующей команды (где переменная ps1 представляет то, что я хочу PS1 переменная должна быть):

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

Вот мой полный .bash_prompt файл для вашей справки (который я просто включаю из .bashrc): https://gist.github.com/austinbeam/10930268


0
2018-04-16 20:41