2022-09-30 17:54:01 +03:00
|
|
|
|
:title: Функциональный и простой Bash prompt
|
|
|
|
|
:date: 10 Jul 22
|
|
|
|
|
|
|
|
|
|
====================================
|
|
|
|
|
Функциональный и простой 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
|
|
|
|
|
|
2022-10-21 22:29:23 +03:00
|
|
|
|
На GitHub можно найти много всяких скриптов или даже целых "фремворков" типа
|
|
|
|
|
`этого`_ или `отдельные скрипты`_ для Git. Однако, скрипт для PS1 и так
|
|
|
|
|
`поставляется`_ в пакете Git.
|
|
|
|
|
|
|
|
|
|
Помимо **git-prompt.sh** я использую функцию ``__exit_code_ps1()``, которая
|
|
|
|
|
просто печатает число, если оно не равно нулю. Это очень удобно — всегда
|
|
|
|
|
видишь код выхода команды. Порой это очень помогает при отладке скриптов.
|
2022-09-30 17:54:01 +03:00
|
|
|
|
|
|
|
|
|
В итоге всё это дело у меня выглядит вот так:
|
|
|
|
|
|
|
|
|
|
.. image:: https://i.nxhs.cloud/ovD.png
|
|
|
|
|
|
|
|
|
|
.. Links
|
|
|
|
|
|
|
|
|
|
.. _этого: https://github.com/ohmybash/oh-my-bash
|
|
|
|
|
.. _отдельные скрипты: https://github.com/magicmonty/bash-git-prompt
|
|
|
|
|
.. _поставляется: https://github.com/git/git/tree/master/contrib/completion>
|
|
|
|
|
|