В Интернете есть несколько учебных пособий / сообщений (например, http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) о том, как настроить приглашение в bash, установив PS1
. Есть ли способ настроить цвет / жирный шрифт команды, которую я набираю?
Другими словами, в качестве примера скажем, что я хотел зеленую подсказку, жирную синюю команду, а затем выводил в любых цветах по умолчанию. В приведенном ниже примере я уже знаю, как сделать так, чтобы " joe>
" показывалось зеленым, синим, жирным шрифтом, независимо от настроек PS1
. Но есть ли способ, как я могу сделать git status
шоу, например, жирным шрифтом?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Ответы:
Вы должны оставить цветовой трейлинг после PS1 (запустите его после
>
в вашем примере), а затем используйтеDEBUG
ловушку bash, чтобы очистить цвет перед выполнением команды (но после того, как вы нажмете enter в вашей оболочке. Попробуйте что-то вроде этого :источник
ls --color=always
будет окрашен)?^[(B^[[m
). Это происходит только в некоторых системах: я проверил это на двух системах, на обеих работала Ubuntu 12.04 LTS, и только одна из них имела помехи.Для полноты, вот как установить цвет подсказки и цвет ввода командной строки в bash. Поместите эти строки в свой
.bashrc
.Ловушка DEBUG, предложенная Крисом Дауном , используется для сброса атрибутов текста. Он предназначен для отладки, но также полезен для выполнения кода перед выполнением команды, введенной пользователем .
В настройках подсказки:
\[…\]
используется вокруг escape-последовательностей, чтобы сообщить bash, что они не занимают никакого экрана (без них экран будет искажен, когда bash потребуется перерисовать приглашение).\e[…m
где…
число, или, в более общем случае, последовательность чисел, разделенных точками с запятой, представляет собой управляющую последовательность, отправляемую терминалу для воздействия на цвет и другие атрибуты следующего текста. Например,1;34
устанавливает жирный синий цвет;0;32
сбрасывает все атрибуты, затем меняет цвет на зеленый. Отрегулируйте по вкусу.\w\$
распечатать текущий каталог и$
или#
. Вы можете, конечно, изменить это на что угодно, и вставить текстовые атрибуты между ними, если хотите.источник
Я только изучаю команды BASH и сижу здесь, играя с командами цвета в моей версии. Я понял это решение:
Используя эту команду:
Разобрать: PS1 =: запускает команду PS1
'': содержать команду в одинарных кавычках (поэтому BASH не считает, что это команда для нее)
\: каждая отдельная команда начинается с этого
[]: содержать каждую команду
\ e (также может быть \ 033 управляющим символом ASCII): запускает команду цвета
Команда color предшествует тому, к чему она относится.
[\ e [0; 36 м]: голубой
\ h: имя хоста
'>': печатается после имени хоста
[\ e [0; 31 м]: красный
Очевидно, красная команда в конце делает ввод красным. Просто измените цвета по своему вкусу, и это то, что вы ищете.
Также этот сайт мне немного помог:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Моя версия: GNU bash, v. 4.2.46
Береги себя,
ласка
источник