为了防止任何人有兴趣看到Git提示功能的替代解决方案,我在GitHub.com上发布了这个脚本,但是为了使它更简单,您可以从这里获得它。
它对我很有用,希望对你也一样。
## Setting Prompt Colour(s):
invColor="$(tput rev)"; ## tput rev - Inverse
resColor="$(tput sgr0)"; ## tput sgr0 - Reset
## Custom Prompt Colour(s):
_BlackBG="$(tput setab 0)";
bGreenFG="$(tput bold; tput setaf 2)";
bMagentaFG="$(tout bold; tput setaf 5)";
bRedFG="$(tput bold; tput setaf 1)";
bBlueFG="$(tput bold; tput setaf 4)";
bCyanFG="$(tput bold; tput setaf 6)";
bWhiteFG="$(tput bold; tput setaf 7)";
## Define Enclosing-character(s):
_Bracket="${resColor}${_BlackBG}${bWhiteFG}";
oBracket="${_Bracket}["; cBracket="${_Bracket}]${resColor}";
## Bold-Foreground Color(s):
## tput bold - Bold
function git_branch () {
# git_branch() { git name-rev HEAD 2> /dev/null | sed 's#HEAD\ \(.*\)#git::\1#'; }
git branch --no-color 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/git::\1/';
return 0;
}
## Version Control System - Active Working Copy:
function get_branch () {
xBranch="`git_branch`";
if [[ "${xBranch}" =~ "git::master" ]]; then
xBranch="git::${bWhiteFG}master";
else xBranch="`echo ${xBranch}|sed -e 's/git:://g'`";
xBranch="branch::${bGreenFG}${xBranch}";
fi
if git rev-parse --git-dir >/dev/null 2>&1; then
_pVCS="";
if git diff --quiet 2>/dev/null >&2; then
if [[ "${xBranch}" =~ "git::" ]]; then
_pVCS="${bGreenFG}${xBranch}";
else _pVCS="${bMagentaFG}${xBranch}";
fi
else _pVCS="${bRedFG}${xBranch}";
fi
else return 0;
fi
if [[ "${_pVCS}" =~ "no branch" ]]; then
xTAG="`git tags|awk '{print $3}'|sed -e 's/[,;)]//g'`";
_pVCS="${bBlueFG}tag::${bCyanFG}${xTAG}";
fi
## Output Git Active-Repo ID:
if [[ "${_pVCS}" =~ [::] ]]; then
echo -ne "${oBracket}${_BlackBG}${_pVCS}${cBracket}";
fi
# return 0;
}
用途:
declare PS1='\[\033[01;36m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;33m\]\w $(get_branch) \[\033[01;31m\]${XPT}\[\033[00m\] '