Подсветка терминала bash

Поскольку не нашёл однозначно ясного материала по подсветке терминала bash, то решил для себя аккумулировать понятный мне материал.


Когда речь идёт о подсветке bash, то речь всегда заходит о переменной PS1. Но во многих своих заметках гуру не упоминают ни то что как это работает, а даже где это прописывается. Все действия я осуществляю в ОС Debian.

У каждого пользователя есть файл .bashrc, который находится в его домашнем каталоге. Например, этот файл у пользователя root будет расположен по адресу /root/.bashrc. В этот файл и помещается заветная строчка, которая разукрасит командную строку. Например, если туда поместить вот такую строчку:

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

то командная строка будет выглядеть вот так:

Чтобы изменения вступили в силу, надо выйти и заново войти под пользователем, для которого делаются изменения, либо просто в командной строке набрать source ~/.bashrc.


Жёлтая подсветка:

echo "PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u\[\033[01;33m\]@\[\033[01;33m\]\h \[\033[01;33m\]\w \[\033[01;33m\]\$ \[\033[00m\]'" >> /root/.bashrc
source ~/.bashrc

Красная подсветка (для root пользователей):

echo "PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;31m\]@\[\033[01;31m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'" >> /root/.bashrc
source ~/.bashrc

Зелёная подсветка (для не root пользователей):

echo "PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;32m\]@\[\033[01;32m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'" >> /home/nonrootuser/.bashrc

Нераскрытый момент.

Есть в системе общий файл для всех профилей /etc/skel/.bashrc. В нём надо расскомментировать строку #force_color_prompt=yes. И по идее, как пишут, должна включиться подсветка bash. Но этого не происходит.


#Подсветка файлов в терминале

Чтобы в терминале при выводе содержимого каталога подсвечивались разные типы файлов и каталогов, надо в файл /root/.bashrc вставить следующее содержимое:

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
fi

Это пример и как один из вариантов.


UPD14.02.2023

Использовал для Ubuntu22

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

Использованный материал

https://habrahabr.ru/post/269967/

https://www.calculate-linux.ru/blogs/ru/193/show

https://wiki.archlinux.org/index.php/Bash/Prompt_customization_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

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