Изменение цвета информации о пользователе, хосте, каталоге в командной строке терминала

Можно ли изменить цвета в командной строке для user@computer, а также отображение текущего каталога и командной части командной строки?

Я уже видел нечто подобное, сделанное пользователями OSX, но я не знаю, как сделать то же самое в терминале gnome (я могу изменять только цвета переднего плана и фона).

Это было бы очень полезно, например, при попытке скомпилировать программы с ошибками, поскольку длинные неформатированные сообщения затрудняют различение, какие строки являются командами, а какие выводятся.

Colors in osx terminal

Вы можете отредактировать настройки, отредактировав файл: ~/.bashrc.

  1. Откройте файл: gedit ~/.bashrc.

  2. Ищите строку с #force_color_prompt=yes и раскомментировать (удалить #).

  3. Посмотрите на строку ниже if [ "$color_prompt" = yes ]; then это должно выглядеть так:

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

    Обратите внимание на ту часть \u@\h в нем написано "user@host" и номер перед ним \[\033[01;32m\] указывает на цвет. Это то, что вы должны изменить. Например, давайте изменим пользователя на фиолетовый, символ "@" на черный, а хост - на зеленый. Отредактируйте строку так, чтобы она выглядела следующим образом:

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u\[\033[01;30m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Результат:
enter image description here

Номера цветов следующие:

Черный 0;30 Темно-Серый 1;30 Синий 0;34 Светло-голубой 1;34 Зеленый 0;32 Светло-Зеленый 1;32 Голубой 0;36 Светло-Голубой 1;36 Красный 0;31 Светло-Красный 1;31 Фиолетовый 0;35 Светло-Фиолетовый 1;35 Коричневый 0;33 Желтый 1;33 Светло-Серый 0;37 Белый 1;37

Рекомендации: 1, 2.

Вы можете попробовать Генератор BASHRC. Это, безусловно, самый простой способ получить приглашение, которое вы хотите. Я заметил, что цвета, определенные здесь, могут отличаться от вашей собственной системы, но это небольшая проблема. С помощью сгенерированного кода вы можете самостоятельно изменять цвета.

Пользователь сервера:

export PS1="\[\e[01;37m\][\[\e[0m\]\[\e[01;32m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;34m\]\h\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;37m\]\t\[\e[0m\]\[\e[01;37m\] \W]\\$ \[\e[0m\]"

Корень сервера:

export PS1="\[\e[01;37m\][\[\e[0m\]\[\e[01;31m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;34m\]\h\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;37m\]\t\[\e[0m\]\[\e[01;37m\] \W]\\$ \[\e[0m\]"

И при необходимости вы можете изменить цвет имени хоста, чтобы отразить другой тип серверов.

Я использую другой формат для своего локального компьютера:

export PS1="\[\e[01;33m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;36m\]\h\[\e[0m\]\[\e[00;37m\] \t \[\e[0m\]\[\e[01;35m\]\w\[\e[0m\]\[\e[01;37m\] > \[\e[0m\]"

Теперь мой любимый:

export PS1="\n\[\e[01;33m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;36m\]\h\[\e[0m\]\[\e[00;37m\] \t \[\e[0m\]\[\e[01;35m\]\w\[\e[0m\]\[\e[01;37m\] \[\e[0m\]\n$ "

В этой последней подсказке есть один приятный штрих. Он добавляет новую строку после запроса и пустую новую строку перед ним. Теперь вы можете без проблем отобразить полный путь к каталогу, и это делает более понятным, с чего начинается новая команда, в случае длинного вывода.


Еще одно обновление, поскольку ЗШ теперь это оболочка по умолчанию в Macos. Это должно быть отредактировано в файле .zshrc:

NEWLINE=$'\n'DATE=$( date +"[%Y-%m-%d %H:%M:%S]" )PROMPT="${NEWLINE}%F{yellow}${DATE} %(!.%F{red}.%F{white})%n%F{cyan}@%m %F{yellow}%d${NEWLINE}%F{reset}> "

Для получения подробной информации, смотрите это подробное руководство по.

Короче говоря, вы можете изменить приглашение, отредактировав переменную среды $PS1. Здесь так много нужно сказать, что я просто покажу вам свою подсказку и направлю вас по ссылке выше для получения более подробной информации.

Части, связанные с цветом, находятся в функции setPrompt:

# This function from: https://wiki.archlinux.org/index.php/Color_Bash_Prompt_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29#Wolfman.27s################################################### Fancy PWD display function################################################### The home directory (HOME) is replaced with a ~# The last pwdmaxlen characters of the PWD are displayed# Leading partial directory names are striped off# /home/me/stuff          -> ~/stuff               if USER=me# /usr/share/big_dir_name -> ../share/big_dir_name if pwdmaxlen=20##################################################bash_prompt_shortener() {    # How many characters of the $PWD should be kept    local pwdmaxlen=25    # Indicate that there has been dir truncation    local trunc_symbol=".."    local dir=${PWD##*/}    pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))    NEW_PWD=${PWD/#$HOME/\~}    local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))    if [ ${pwdoffset} -gt "0" ]    then        NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}        NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}    fi}function setPrompt {  COLOR1="\[\033[1;33m\]"     #First color  COLOR2="\[\033[0;33m\]"     #Second color  NO_COLOR="\[\033[0m\]"      #Transparent - don't change  case $TERM in     xterm*)      TITLEBAR="\[\033]0;\h - \w\007\]"      ;;    *)      TITLEBAR=""      ;;  esac  local dash_open="${COLOR1}-${COLOR2}-"  local dash_close="${COLOR2}-${COLOR1}-"  local spacer="${COLOR2}-"  local jobs_and_history="${COLOR2}(${COLOR1}\!${COLOR2}:${COLOR1}\j${COLOR2})"  local user_host="${COLOR2}(${COLOR1}\u${COLOR2}@${COLOR1}\H${COLOR2})"  local host="${COLOR2}(${COLOR1}\H${COLOR2})"  local root_or_not="${COLOR2}(${COLOR1}\\\$${COLOR2})"  local cwd="${COLOR2}(${COLOR1}\w${COLOR2})"  #PS1="${TITLEBAR}${COLOR1}-${COLOR2}-(${COLOR1}\!${COLOR2}:${COLOR1}\j${COLOR2})-(${COLOR1}\w${COLOR2})-${COLOR1}-\n-${COLOR2}-(${COLOR1}\u${COLOR2}@${COLOR1}\H${COLOR2})-(${COLOR1}\\\$${COLOR2})-${COLOR1}- ${NO_COLOR}"  #PS1="${TITLEBAR}${dash_open}${cwd}${spacer}${root_or_not}${dash_close}\n${dash_open}${jobs_and_history}${spacer}${host}${dash_close}${NO_COLOR} "  #PS2="${COLOR2}--${COLOR1}- ${NO_COLOR}"  PS1="${TITLEBAR}${COLOR1}"'${NEW_PWD}'"${COLOR2}:\$${NO_COLOR} "  PS2="$spacer$dash_close$NO_COLOR "}bash_prompt_shortenersetPromptunset setPrompt#Determine and display the exit Status of the last command, if non-zero.function checkExitStatus() {  local status="$?"  local signal=""  local COLOR1="\033[0;0;33m"     #First color  local COLOR2="\033[0;0;36m"     #Second color  local NO_COLOR="\033[0m"        #Transparent - don't change  if [ ${status} -ne 0 -a ${status} != 128 ]; then    # If process exited by a signal, determine name of signal.    if [ ${status} -gt 128 ]; then      signal="$(builtin kill -l $((${status} - 128)) 2>/dev/null)"      if [ "$signal" ]; then        signal="$signal"      fi    fi    echo -e "${COLOR1}[Exit ${COLOR2}${status} ${signal}${COLOR1}]${NO_COLOR}" 1>&2    #echo -ne "${COLOR1}[Exit ${COLOR2}${status}${COLOR1} ${COLOR2}${signal}${COLOR1}]${NO_COLOR} " 1>&2    fi  return 0}print_prompt_time() {    printf "%*s\r" $(tput cols) "$(date '+%T')"}promptCmd() {    checkExitStatus    print_prompt_time}PROMPT_COMMAND=promptCmd

В дополнение к цветам, моя подсказка имеет несколько других функций, таких как сокращенные имена каталогов (см. Функцию bash_prompt_shortener), автоматическое отображение статуса завершения последней команды, если оно не равно нулю (функция checkExitStatus) и отображение времени в крайних правых столбцах (функция print_prompt_time).

Вы можете воспользоваться сервисом bash generator. Например, мне нравится проходить через это Ezprompt. Это пример, который я привел:

PS1="\[\e[34m\][\[\e[m\] \[\e[36m\]\A\[\e[m\] \[\e[37m\]\u\[\e[m\]\[\e[31m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\] \[\e[35m\]~\[\e[m\] \[\e[34m\]]\[\e[m\]\n$ "

После получения удовлетворяющих вас результатов bash отредактируйте приглашение, выполнив следующее export командой или путем редактирования ~/.bashrc файл с nano текстовый редактор или vim:

sudo nano ~/.bashrc

и добавление export команда:

export PS1="\[\e[34m\][\[\e[m\] \[\e[36m\]\A\[\e[m\] \[\e[37m\]\u\[\e[m\]\[\e[31m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\] \[\e[35m\]~\[\e[m\] \[\e[34m\]]\[\e[m\]\n$ "

Я написал письмо файл это может помочь вам настроить все

Запустите файл с началом . чтобы заставить его работать на том же терминале, иначе он создаст дочерний терминал, и его результаты не будут видны. Подобный этому:

. shortern_path_terminal.sh

Как это работает:

  • Переменная PS1 управляет отображением терминала.

    PS1='\[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$ '
    • u - Относится к пользователю

    • w - Ссылается на текущий рабочий каталог

    • W - Показывает полный путь до текущего рабочего каталога

    • h - Отображает имя системы

    • [\033[01;32m] - Предшествует текстуре текста

    • 01 жирный шрифт

    • 00 не выделено жирным шрифтом

    • {цвет}m

        Black       0;30     Dark Gray     1;30  Blue        0;34     Light Blue    1;34  Green       0;32     Light Green   1;32  Cyan        0;36     Light Cyan    1;36  Red         0;31     Light Red     1;31  Purple      0;35     Light Purple  1;35  Brown       0;33     Yellow        1;33  Light Gray  0;37     White         1;37

Ссылка

Вы ищете настройки “bash” (или настройки для предпочитаемой вами оболочки), а не Gnome Terminal.