Каждый раз, когда я выполняю команду, мне трудно найти, где находится начальная точка результатов, полученных из моей последней команды. Поэтому я хочу, чтобы строка по умолчанию «Артур-Mac-mini ...» изменила цвет, как я могу это сделать?
Спасибо!
Каждый раз, когда я выполняю команду, мне трудно найти, где находится начальная точка результатов, полученных из моей последней команды. Поэтому я хочу, чтобы строка по умолчанию «Артур-Mac-mini ...» изменила цвет, как я могу это сделать?
Спасибо!
Вы можете сделать это, изменив переменную PROMPT_COMMAND
.
Содержимое этой переменной не просто строка, как в PS1
. На самом деле это команда, которая выполняется до того, как bash отобразит приглашение.
Настройка
PROMPT_COMMAND
Лучший способ сделать это - использовать переменную
PROMPT_COMMAND
; содержимое этой переменной не просто строка, как вPS1
. На самом деле это команда, которая выполняется до того, как bash отобразит приглашение. Чтобы попробовать, давайте добавим это в наш.bashrc
:PROMPT_COMMAND='echo "comes before the prompt"'
Мы используем команду
echo
здесь; если вы не знакомы с ним, просто передайте ему строку, и она запишет ее в терминал. Само по себе это не невероятно полезно (хотя вы можете использовать его для просмотра переменных:echo $PS1
), но замечательно, когда используется с другими командами, поэтому отображайте их вывод.Давайте сделаем что-то более полезное здесь. Давайте напишем функцию bash, которую мы назначим
PROMPT_COMMAND
. Попробуй это:print_before_the_prompt () { echo "comes before the prompt" } PROMPT_COMMAND=print_before_the_prompt
Если вы используете это, вы не должны видеть различий в вашем запросе от того, что у нас есть выше. Теперь давайте сделаем это полезным.
print_before_the_prompt () { echo "$USER: $PWD" } PROMPT_COMMAND=print_before_the_prompt PS1='->'
print_before_the_prompt
позже модифицируется, чтобы добавить цвет к приглашению.
...
Добавление цвета
Хорошо выглядеть! Но давайте сделаем еще один шаг вперед. Давайте добавим немного цвета к этому. Мы можем использовать некоторые специальные коды, чтобы изменить цвет текста в терминале. Может быть довольно сложно использовать реальный код, поэтому я хотел бы скопировать этот список переменных для цвета и добавить его в начало моего файла .bashrc:
txtblk='\e[0;30m' # Black - Regular txtred='\e[0;31m' # Red txtgrn='\e[0;32m' # Green txtylw='\e[0;33m' # Yellow txtblu='\e[0;34m' # Blue txtpur='\e[0;35m' # Purple txtcyn='\e[0;36m' # Cyan txtwht='\e[0;37m' # White bldblk='\e[1;30m' # Black - Bold bldred='\e[1;31m' # Red bldgrn='\e[1;32m' # Green bldylw='\e[1;33m' # Yellow bldblu='\e[1;34m' # Blue bldpur='\e[1;35m' # Purple bldcyn='\e[1;36m' # Cyan bldwht='\e[1;37m' # White unkblk='\e[4;30m' # Black - Underline undred='\e[4;31m' # Red undgrn='\e[4;32m' # Green undylw='\e[4;33m' # Yellow undblu='\e[4;34m' # Blue undpur='\e[4;35m' # Purple undcyn='\e[4;36m' # Cyan undwht='\e[4;37m' # White bakblk='\e[40m' # Black - Background bakred='\e[41m' # Red badgrn='\e[42m' # Green bakylw='\e[43m' # Yellow bakblu='\e[44m' # Blue bakpur='\e[45m' # Purple bakcyn='\e[46m' # Cyan bakwht='\e[47m' # White txtrst='\e[0m' # Text Reset
В этом безумии есть какой-то метод: первый набор включает нормальную окраску. Второй набор включите жирным цветом. Третий набор включить подчеркнутую окраску. И этот четвертый набор включает фоновую окраску. Этот последний сбрасывает окраску в нормальное русло. Итак, давайте использовать их!
print_before_the_prompt () { printf "\n $txtred%s: $bldgrn%s \n$txtrst" "$USER" "$PWD" }
Здесь я добавил
$txtred
перед первым%s
и$bldgrn
перед вторым%s
; затем, в конце, я сбросил цвет текста. Вы должны сделать это, потому что как только вы установите цвет, он будет удерживаться до тех пор, пока вы не используете новый цвет или не сбросите цвет. Вы также заметите, что при установке переменной мы не ставим перед ней знак доллара; но мы используем знак доллара при использовании переменной: так работают переменные bash. Это дает нам следующее:
Источник Как настроить командную строку