Кастомизируем Bash, Zsh
На конференциях у некоторых докладчиков можно увидеть терминалы в очень красивой боевой раскраске, прям муа ?. Выглядит очень сочно, стильно. Одним словом — по фронтендерски, модно, молодежно, хипстерня!
Стал разбираться что это и выяснил что продвинутую стилизацию поддерживает Zsh.
Если хочется чего-то такого, то по ссылке подробный мануал по кастомизации и настройке:
Если вы не хотите уходить с Bash и пересаживаться на Zsh, то вы можете получить терминал похожий на темизированный Zsh (как на скриншоте):
Но вам потребуются дополнительные скрипты, а конкретно установить Powerline — как я понял это что-то типа обертки, приложение написано на Python. Все подробности по ссылке:
Отдельный инструмент Powerline Git status: позволяет красиво выводить информацию о текущем проекте (если вы используете Git):
Native Vanilla Bash prompt
Не хочу сложностей и заморочек. Есть варианты? Да, я смог собрать себе стиль, отдаленно напоминающий то что описано выше. Без вспомогательных приложений и скриптов, просто настроив общие стили и прописав свой PS1. Что у меня получилось:
User mode
Вся эта красота описывается 1й строчкой в .bashrc:
PS1="n[e[48;5;28;1;5;33m]▶[e[48;5;28;97m] A [e[48;5;34;38;5;232m][e[1;5;33m]▶[e[38;5;232m] u@h [e[48;5;30m][e[1;5;33m]▶[e[38;5;15m] w [e[40;1;5;33m]▶ [e[40;32m][$txtcyn]$git_branch[$txtred]$git_dirty[$txtrst]n[e[1;5;33m]❱ [e[m][e[32m]"
Тут есть переменные, которые отвечают за индикацию состояния GIT:
function find_git_branch()
{
local branch
if branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null); then
if [[ "$branch" == "HEAD" ]]; then
branch='detached*'
fi
git_branch="($branch)"
else
git_branch=""
fi
}
function find_git_dirty()
{
local status=$(git status --porcelain 2> /dev/null)
if [[ "$status" != "" ]]; then
git_dirty='*'
else
git_dirty=''
fi
}
PROMPT_COMMAND="find_git_branch; find_git_dirty; $PROMPT_COMMAND"
Root mode
Для рута немного другой стиль:
PS1="n[e[0;31m]☰[e[0;33m] t [e[0;31m]❱[e[m] u@h [e[0;31m]❱[e[0;33m] w [e[m][e[0;31m]❱n❱❱❱ [e[m][e[0;91m]"
Попроще и без git индикаторов.
У меня есть небольшая репка, в которой можно найти комплект скриптов для улучшения терминала:
Все это использую на своих девелоперских машинках.