Я хочу визуализировать в консоли статус завершения последней команды.
Если последняя команда выполнилась со статусом 0, т. е. без ошибок, должен быть стандартный зеленый цвет. А если статус был не 0, то цвет должен быть красный.
Вот на примере строка после false должна быть красная. Желательно еще вывести статус завершения, если он не 0.
Как это сделать?
Ответ
Если говорим о bash, в оболочке есть встроенные переменные отвечающие за
настройки строки ввода.
PROMPT_COMMAND
Если установлена, значение воспринимается как команда выполняемая до выдачи основного приглашения командной строки ($PS1)
PS1
Основная переменная приглашения командной строки. Значение по умолчанию \s-\v\$
Можно написать свою функцию и добавить в ~/.bashrc файл. Разбив задачку на шаги получим:
[статичный] [динамический] [станичный]
_prmtcmd() {
local EXIT="$?"
local NA='\[\e[0m\]'
local R='\[\e[0;31m\]'
local G='\[\e[0;32m\]'
local B='\[\e[1;34m\]'
# Статичный: имя пользователя и хоста
PS1="${G}\u@\h${NA}
"
# Динамический: выход из последней выполненной команды
if [ $EXIT != 0 ]; then
PS1+="[${R}false${NA}] "
else
PS1+="[${G}true${NA}] "
fi
# Статичный: приглашение к вводу
PS1+="${B}~$ ${NA}"
}
PROMPT_COMMAND=_prmtcmd
Графический пример выполнения:
Смотрите модификаторы для каждого из цветов в документации (ссылки ниже).
Ссылки
https://www.gnu.org/software/bash/manual/html_node/Variable-Index.html#Variable-Index
http://misc.flogisoft.com/bash/tip_colors_and_formatting
Комментариев нет:
Отправить комментарий