nixhacks.net/content/bash_prompt.rst

50 lines
2.4 KiB
Bash
Raw Normal View History

2022-08-07 14:03:38 +03:00
:title: Функциональный и простой Bash prompt
:date: 10 Jul 2022
====================================
Функциональный и простой Bash prompt
====================================
О промптинге в Bash написано очень много, в этой заметке я просто покажу
лаконичный и функциональный вариант приглашения командной строки.
Вот фрагмент из моего **~/.bashrc**:
.. code-block:: shell
# 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? Не вижу смысла не использовать его, если только вам не надо
как-то иначе работать с PS1.
.. _этого: https://github.com/ohmybash/oh-my-bash
.. _отдельные скрипты: https://github.com/magicmonty/bash-git-prompt
.. _поставляется: https://github.com/git/git/tree/master/contrib/completion>
Помимо **git-prompt.sh** я использую функцию ``__exit_code_ps1()``, которая просто
печатает число, если оно не равно нулю. Это очень удобно — всегда видишь код выхода
предыдущей запущенной команды, порой очень помогает при отладке скриптов.
В итоге всё это дело у меня выглядит вот так:
.. image:: https://i.nxhs.cloud/ovD.png