Как мне получить цветной bash?

Вопрос или проблема

Как сделать так, чтобы bash выглядел с цветами, как на этом изображении?

colored-bash

Откройте ~/.bashrc в текстовом редакторе и раскомментируйте строку:

#force_color_prompt=yes

чтобы она выглядела так:

force_color_prompt=yes

Сохраните файл и выполните source ~/.bashrc

Я придумал такое решение:

  1. Откройте ~/.bashrc в текстовом редакторе.

  2. Скопируйте это и добавьте в конец файла ~/.bashrc:

    PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '
    
  3. Сохраните файл и выполните source ~/.bashrc:

    source ~/.bashrc
    

Для полного списка доступных цветов и дополнительных опций, посмотрите эти ссылки:

Версия, которая немного более «универсальна» – должна работать в разных средах:
(зависит от terminfo)

Вставьте это в ваш $HOME/.bashrc:

function fgtab {
  echo "tput setf/setb - таблица переднего/заднего фона"
  for f in {0..7}; do
    for b in {0..7}; do
      echo -en "$(tput setf $f)$(tput setb $b) $f/$b "
    done
    echo -e "$(tput sgr 0)"
  done
}

# Подсказка в некотором роде независимом от терминала:
cname="$(tput setf 3)"
csgn="$(tput setf 4)"
chost="$(tput setf 2)"
cw="$(tput setf 6)"
crst="$(tput sgr 0)"
PS1="\[${cname}\]\u\[${csgn}\]@\[${chost}\]\h:\[${cw}\]\w\[${csgn}\]\$\[${crst}\] "

Затем выполните source ~/.bashrc.

После этого fgtab отобразит цветовую таблицу с номерами. Эти номера предназначены для tput setf n и tput setb n, где ‘n’ – это номер, ‘f’ обозначает ‘передний план’, а ‘b’ обозначает ‘задний план’ цвета.

tput sgr 0 сбросит цвета переднего и заднего фона к значениям по умолчанию.

И, как видите, менять цвета, используемые для подсказки, становится действительно легко (просто отредактируйте то же самое число в $HOME/.bashrc, как хотите).

Добавьте $(tput setb n) в $cname, если хотите, чтобы ВСЯ подсказка имела задний фон n.

У меня были проблемы с работой “force-color-prompt” в Ubuntu 20 с использованием Kitty/Putty.

Но обратите внимание на следующий код в стандартном файле .bashrc Ubuntu 20:
case “$TERM” in
xterm-color|*-256color) color_prompt=yes;;
esac

Итак, в Kitty зайдите в

  1. Соединение
  2. Данные

Затем измените строку “Тип терминала” с “xterm” на “xterm-color”, и вуаля!

Если вы установите минимальную версию Ubuntu, вы не получите стандартный .bashrc, который содержит значения для цветов и другие настройки. Вот стандартный .bashrc, который вы можете использовать.

# ~/.bashrc: выполняется bash(1) для нестандартных оболочек.
# смотрите /usr/share/doc/bash/examples/startup-files (в пакете bash-doc)
# для примеров

# Если не запущен в интерактивном режиме, ничего не делайте
case $- in
    *i*) ;;
      *) return;;
esac

# не добавляйте дублирующие строки или строки, начинающиеся с пробела, в историю.
# Смотрите bash(1) для других опций
HISTCONTROL=ignoreboth

# добавлять в файл истории, не перезаписывая его
shopt -s histappend

# для настройки длины истории смотрите HISTSIZE и HISTFILESIZE в bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# проверяйте размер окна после каждой команды и, если необходимо,
# обновляйте значения LINES и COLUMNS.
shopt -s checkwinsize

# Если установлено, шаблон "**" в контексте расширения пути будет
# соответствовать всем файлам и нулю или более директориям и подпапкам.
#shopt -s globstar

# сделайте меньше более дружелюбным для не текстовых входных файлов, смотрите lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# установите переменную, идентифицирующую chroot, в котором вы работаете (используется в подсказке ниже)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# установите красивую подсказку (не цветную, если мы не знаем, что "хотим" цвет)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# раскомментируйте для цветной подсказки, если терминал имеет эту возможность; по умолчанию отключено, чтобы не отвлекать пользователя: акцент в терминальном окне
# должен быть на выводе команд, а не на подсказке
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 &> /dev/null; then
    # У нас есть поддержка цветов; предположим, что это соответствует Ecma-48
    # (ISO/IEC-6429). (Отсутствие такой поддержки крайне редко, и такой
    # случай скорее будет поддерживать setf, а не setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# Если это xterm, установите заголовок на user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# включите цветовую поддержку для ls и добавьте удобные алиасы
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls="ls --color=auto"
    #alias dir="dir --color=auto"
    #alias vdir="vdir --color=auto"

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# цветные предупреждения и ошибки GCC
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# еще несколько алиасов для ls
alias ll="ls -alF"
alias la="ls -A"
alias l="ls -CF"

# Добавьте алиас "alert" для команд с длительным выполнением. Используйте так:
#   sleep 10; alert
alias alert="notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e "\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Определения алиасов.
# Вы можете поместить все свои дополнения в отдельный файл, например
# ~/.bash_aliases, вместо того чтобы добавлять их прямо сюда.
# Смотрите /usr/share/doc/bash-doc/examples в пакете bash-doc.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# включите функции программируемого завершения (вам не нужно включать
# это, если оно уже включено в /etc/bash.bashrc и /etc/profile
# загружает /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Ответ или решение

Чтобы настроить цветной вывод в Bash, вам необходимо внести изменения в файл конфигурации вашего терминала — .bashrc. Ниже приведены подробные шаги, которые помогут вам сделать вашу командную строку более привлекательной и информативной.

Шаг 1: Открытие файла .bashrc

Сначала откройте файл .bashrc, который находится в вашем домашнем каталоге. Вы можете использовать любой текстовый редактор, например, nano или vim. Для этого выполните команду:

nano ~/.bashrc

Шаг 2: Включение цветного промпта

Внутри файла найдите строку:

#force_color_prompt=yes

Удалите символ # в начале строки, чтобы она выглядела так:

force_color_prompt=yes

Это позволит Bash использовать цветной вывод, если терминал поддерживает это.

Шаг 3: Настройка вашего цветного промпта

Добавьте следующий код в конец файла .bashrc, чтобы настроить ваш цветной промпт:

PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '

В этом коде:

  • \u — имя пользователя
  • \h — имя хоста
  • \w — текущая директория
  • Различные коды \[\033[1;XXm\] обозначают различные цвета.

Шаг 4: Применение изменений

Сохраните файл и примените изменения, выполнив команду:

source ~/.bashrc

Теперь ваш терминал должен отображать цветной промпт.

Шаг 5: Дополнительные настройки

Если вы хотите более универсальный подход, который будет работать в разных средах (возможно, вам понадобятся зависимости от terminfo), вы можете добавить следующий код в файл .bashrc:

function fgtab {
  echo "tput setf/setb - таблица переднего/заднего плана"
  for f in {0..7}; do
    for b in {0..7}; do
      echo -en "$(tput setf $f)$(tput setb $b) $f/$b "
    done
    echo -e "$(tput sgr 0)"
  done
}

# Устанавливаем промпт
cname="$(tput setf 3)"
csgn="$(tput setf 4)"
chost="$(tput setf 2)"
cw="$(tput setf 6)"
crst="$(tput sgr 0)"
PS1="\[${cname}\]\u\[${csgn}\]@\[${chost}\]\h:\[${cw}\]\w\[${csgn}\]\$\[${crst}\] "

Это позволит вам получить цветовой код для настройки переднего и заднего плана.

Шаг 6: Проверка работы

Чтобы проверить, работает ли цветной вывод, можете выполнить команду fgtab, которая выведет таблицу доступных цветов. Эти номера можно использовать, чтобы менять цвета в вашем промпте.

Решение проблем

Если у вас возникают проблемы с цветами, убедитесь, что вы используете терминал, который поддерживает цвет. Например, в терминале Kitty или Putty необходимо изменить строку типа терминала с xterm на xterm-color.

Заключение

С помощью вышеизложенных шагов вы сможете настроить цветной Bash. Не бойтесь экспериментировать с цветами и стилями — это может сделать вашу работу более приятной и продуктивной. Для дополнительной информации и списка доступных цветов обратитесь к bash-color-chart и wiki.ubuntuusers.

Оцените материал
Добавить комментарий

Капча загружается...