Вопрос или проблема
Как сделать так, чтобы bash выглядел с цветами, как на этом изображении?
Откройте ~/.bashrc
в текстовом редакторе и раскомментируйте строку:
#force_color_prompt=yes
чтобы она выглядела так:
force_color_prompt=yes
Сохраните файл и выполните source ~/.bashrc
Я придумал такое решение:
-
Откройте
~/.bashrc
в текстовом редакторе. -
Скопируйте это и добавьте в конец файла
~/.bashrc
:PS1='\[\033[1;36m\]\u\[\033[1;31m\]@\[\033[1;32m\]\h:\[\033[1;35m\]\w\[\033[1;31m\]\$\[\033[0m\] '
-
Сохраните файл и выполните
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 зайдите в
- Соединение
- Данные
Затем измените строку “Тип терминала” с “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.