gpt4 book ai didi

linux - 差不多了!如何向 bash 提示符添加另一种 git status 颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:03 25 4
gpt4 key购买 nike

这主要是有效的,我能够根据 git 状态为我的 bash 提示符添加颜色。如果一切都已提交,(origin/master) 将是绿色的,否则我知道我还没有提交。但是,我正在尝试添加其他颜色,例如黄色表示“未跟踪的更改”,如果我什么都没做,则为红色。

这是我到目前为止从我的 .bashrc 中的各种帖子中拼凑的内容

Bash 版本:4.3.48(1)-release

操作系统:Linux Mint 18.2

## trim to two dir depth
PROMPT_DIRTRIM=2

## green user@hostname, then blue dirs, then colours for git branch

COLOURGREEN="\033[01;32m"
COLOURBLUE="\033[01;34m"
COLOURPLAIN="\033[m"
COLOURRED="\033[1;31m"
COLOURYELLOW="\033[1;33m"

## This works fine on it's own, I see the (origin/master) in prompt
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

## green works when all files committed but not other colours
git_colour() {

local gitstatus="$(git status 2> /dev/null)"

if [[ ! $gitstatus =~ "working directory clean" ]]; then
echo -e $COLOURRED
elif [[ $gitstatus =~ "Untracked files:" ]]; then
echo -e $COLOURYELLOW
elif [[ $gitstatus =~ "nothing to commit" ]]; then
echo -e $COLOURGREEN
else
echo -e $COLOURPLAIN
fi
}

## working export without colour on git
# Example: user@hostname ~/.../dir3/dir4 (origin/master)
# export PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[m\]\$(parse_git_branch) $ "

## works only when green
export PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\$(git_colour)\]\$(parse_git_branch)\[\033[m\] $ "

只是对 git_colour() 有一点帮助,或者如果我搞砸了 bash 颜色代码?谢谢

最佳答案

通过使用来自 Benjamin W 的 git status --porcelain 建议,然后重做 if 语句以将 COLOURGREEN 作为最后的 else,我现在有一个根据 git status 改变颜色的提示!万岁。将上面的 git_colour() 更改为:

git_colour() {


local gitstatus="$(git status --porcelain 2> /dev/null)"

if [[ $gitstatus =~ "??" ]]; then
echo -e $COLOURRED
elif [[ $gitstatus =~ "A" ]]; then
echo -e $COLOURYELLOW
else
echo -e $COLOURGREEN
fi
}

关于linux - 差不多了!如何向 bash 提示符添加另一种 git status 颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com