[home] [projects] [knowledge base] [manpages] [code] [markdown] [my ip]

Функциональный и простой Bash prompt

О промптинге в Bash написано очень много, в этой заметке я просто покажу лаконичный и функциональный вариант приглашения командной строки.

Вот фрагмент из моего ~/.bashrc:

# Command line prompt
# Print a non-zero exit code
__exit_code_ps1() {
    if [ "$1" -ne 0 ]; then
        echo "$1 "
    fi
}

PS1='\[\033[0;92m\]\w \[\033[0;31m\]$(__exit_code_ps1 $?)\[\033[0;15m\]\$ '

# Git prompt
# See /usr/share/git/completion/git-prompt.sh or download from:
# https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
if [ -f /usr/share/git/completion/git-prompt.sh ]; then
    . /usr/share/git/completion/git-prompt.sh
    GIT_PS1_SHOWDIRTYSTATE=1
    PS1='\[\033[0;96m\]$(__git_ps1 "(%s) ")\[\033[0;92m\]\w \[\033[0;31m\]$(__exit_code_ps1 $?)\[\033[0;15m\]\$ '
fi

На GitHub можно найти много всяких скриптов или даже целых "фремворков" типа этого или отдельные скрипты для Git. Однако, скрипт для PS1 и так поставляется в пакете Git.

Помимо git-prompt.sh я использую функцию __exit_code_ps1(), которая просто печатает число, если оно не равно нулю. Это очень удобно — всегда видишь код выхода команды. Порой это очень помогает при отладке скриптов.

В итоге всё это дело у меня выглядит вот так:

https://i.nxhs.cloud/ovD.png