Вместо создания собственного здесь я бы рекомендовал использовать то, что предоставляется проектом Git из коробки.
В системе CentOS 7.x, если вы yum install git
все уже включено в Git для выполнения как завершения командной строки, так и приглашения git.
$ rpm -ql git|grep completion
/etc/bash_completion.d
/etc/bash_completion.d/git
/usr/share/doc/git-1.8.3.1/contrib/completion
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
/usr/share/git-core/contrib/completion
/usr/share/git-core/contrib/completion/git-completion.tcsh
/usr/share/git-core/contrib/completion/git-prompt.sh
Вот шаги, чтобы сделать это вручную, их нужно будет добавить к вашему ~/.bash_profile
, чтобы сделать их постоянными.
$. /usr/share/git-core/contrib/completion/git-prompt.sh
$ mkdir somedir && cd somedir
$ git init
$ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[\033[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
Выполнение вышеуказанного приведет к тому, что подсказка будет исходить из этого:
[root@centos7 somedir]#
-to-
13:18:42-root/home/vagrant/somedir (master) $
ПРИМЕЧАНИЕ.:теперь в моем приглашении отображается ветка, в которой я сейчас нахожусь в этом репо.
Чтобы получить этот цвет, вам нужно определить цвета, чтобы переменная PS1
для переменных цвета подсказки имела соответствующие управляющие коды для соответствующих цветов:
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[0;34m\]"
MAGENTA="\[\033[0;35m\]"
WHITE="\[\033[0;37m\]"
Теперь снова сбросьте PS1
, чтобы подобрать их.:
13:24:26-root/home/vagrant/somedir (master) $ PS1="$GREEN\t$RED-$BLUE\u$YELLOW\w\[\033[m\]$MAGENTA\$(__git_ps1)$WHITE \$ "
13:24:35-root/home/vagrant/somedir (master) $
И теперь это будет выглядеть так:
ls
? Вероятно, я бы вас отговаривал от этого, потому что вам нужно запустить git status
для каждого каталога в каждой команде ls
, чтобы определить, является ли это репозиторием Git или нет.
Представьте себе:
$ ls somedir
dir1
dir2
dir3
dir4
dir5
dir6
dir7
приведет к 7 git status
командам, чтобы определить, какой каталог является репозиторием Git, а какой нет, чтобы вы могли решить, окрашивать ли его в фиолетовый цвет или нет.
Две вещи:
как указал @Eduardo Trápani, я неправильно использовал getfattr. Я не указал, какие расширенные атрибуты следует просматривать правильно.
Проблема с отправкой btrfs | получением btrfs, приводящая к ошибочным xattrs в пункте назначения, является подтвержденной ошибкой, см.https://github.com/kdave/btrfs-progs/issues/292