0
我對BASH的經驗有限,我正在尋找一些關於如何進行的指導,請耐心等待。bash如果按功能設置變量
我試圖改變命令提示符,當我在git倉庫裏面,我可以使用這個post我在谷歌上找到了,但是我也想根據倉庫的當前狀態添加顏色(乾淨,未跟蹤的文件,已修改的文件)。
目前我有這個在我的.bashrc文件的末尾:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/'
}
modified() {
git status 2> /dev/null | grep -q modified
}
untracked() {
git status 2> /dev/null | grep -q Untracked
}
clean() {
git status 2> /dev/null | grep -q clean
}
NO_COLOR="\[\033[0m\]"
GREEN="\[\033[0;32m\]"
YELLOW="\[\033[0;33m\]"
RED="\[\033[0;31m\]"
set_color() {
if untracked ; then
echo $RED
elif modified ; then
echo $YELLOW
elif clean ; then
echo $GREEN
else
echo $NO_COLOR
fi
}
PS1="\u:\w\$(set_color)\$(parse_git_branch)$NO_COLOR> "
命令提示符的變化,但就像我認爲它應該不會改變顏色。
這裏是我所得到的,而不是:
外混帳回購協議arod:~\[\033[0m\]>
一個git回購arod:~/tos\[\033[0;32m\][dev]>
我不確定如何讓色彩來評價,我認爲,只是在尋找一些指導內從比我有更多BASH經驗的人。
示例:'echo -e「\ 033 [31m Hello World」'。檢查此鏈接:http://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux – Noproblem
這是我正在尋找的解決方案。謝謝 –
使用'printf'(由POSIX定義)比'echo -e'更好(除了使用'-e'輸出外,bash實際上違反了標準。 –