У меня есть это в моем .bashrc:
LIGHTGREEN="\[\033[1;32m\]"
LIGHTRED="\[\033[1;31m\]"
WHITE="\[\033[0;37m\]"
RESET="\[\033[0;00m\]"
function error_test {
if [[ $? = "0" ]]; then
echo -e "$LIGHTGREEN"
else
echo -e "$LIGHTRED"
fi
}
PS1="\u\$(error_test)@\w$RESET \$ "
Похоже, это делает вывод оболочки точно:
имя пользователя \ [\] @ ~ /
Экранирование [и ] вокруг цветовых кодов отображаются в моем приглашении. Если я удалю escape-коды вокруг цветов, он работает, но затем перенос строки bash не сработает.
Обратите внимание, если сделать PS1 = "СВЕТЛО-ЗЕЛЁНЫЙ - что угодно - $ СБРОС "
он работает, а [и] не экранируются. Однако я хочу сделать это внутри функции, что, кажется, является проблемой.
Я не могу найти никакой хорошей документации по этому поводу. man echo
даже не перечисляет параметр -e. Похоже, что в Bash много недокументированных, ручных знаний.