В приглашении Bash (переменная PS1) я вызываю функцию, чтобы потенциально добавить текст в приглашение: export PS1="\u@\h \$(my_function) \$ "
Однако функция в приглашении содержит цветовые коды ANSI, которые меняются в зависимости от выходных данных функции (иногда красный, иногда зеленый). Добавление " \[
" к переменной PS1 должно исключить эти коды как непечатные, но если я сделаю echo
в функции, " \[
" будет напечатано буквально в приглашении.
Как я могу избежать этих цветовых кодов ANSI из функции для использования в приглашении bash?
echo -e "\001\e[31m\002RED"
работает как положено. Благодарность!\001
и\002
будут работать. В противном случае я не уверен. Например, Dash определенно не использует readline .Вот хороший полный ответ. Я должен был сделать намного больше рыть, чтобы выяснить, куда \ 001 и т. Д. Должен был пойти. Надеюсь это поможет.
Как я это настроил, круглые скобки в git-ветке появляются только в том случае, если вы находитесь в git-ветке, иначе она пустая.
источник
Основываясь на ответе Гравити , следующее будет включать управляющие последовательности ANSI в ASCII
SOH
(^A
) иSTX
(^B
), которые эквивалентны\[
и\]
соответственно:Используйте это как:
Или:
В качестве бонуса, многократное выполнение функции не приведет к повторному запуску уже сброшенных управляющих кодов.
источник
Если вы хотите использовать их в приглашении, вам нужно сделать
\[
. Но если вы хотите использовать его в эхо, вы должны использовать\033[
.источник