Каждый раз, когда я выполняю команду, мне трудно найти, где находится начальная точка результатов, полученных из моей последней команды. Поэтому я хочу, чтобы строка по умолчанию «Артур-Mac-mini ...» изменила цвет, как я могу это сделать?

Спасибо!

1 ответ1

1

Как изменить цвет заголовка по умолчанию в iTerm2

Вы можете сделать это, изменив переменную 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. Это дает нам следующее:

Источник Как настроить командную строку

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .