我是 Linux 的新手,我正在关注与 Linux 相关的课程和博客文章,以了解更多有关 Linux 的知识。当我搜索有关 Linux Bashrc、它是什么以及如何使用它时,我偶然发现了一段代码,用于在命令无法正常工作时更改 shell 的颜色。我读到linux .bashrc在链接的文章中,但我的问题是下面几行。
如果上一个命令未能成功运行,此提示会改变颜色,但它也会缩短长路径并包含每个命令的 bash 历史记录编号,以便于检索。这非常有用且高效。
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\'if [[ \$? = "0" ]];
then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]";
fi\'[\u.\h: \'if [[ \pwd|WC -c|tr -d " "' > 18 ]]; then echo
"\\W"; else echo "\\w"; fi\']\$\[\033[0m\] "; echo -ne
"\033]0; hostname -s':'pwed'\007"'
我完全按照代码要求操作,但还是没有得到任何结果,这是什么问题?如果有人能帮助我,我将不胜感激。
答案1
可能是什么问题呢?
代码似乎一开始只是一行简单、繁琐的单行代码,但确实能用。后来它被人(有人写下来,然后别人重新输入?)和(?)机器(一些字符被翻译了?)严重破坏;不一定是按照这个顺序。
现在它已经是垃圾了。即使是在其原始(据说可以正常工作)形式中,它也充满了引用和转义。可能是这样的:
PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi`[\u.\h: `if [[ \`pwd|wc -c|tr -d " "\` > 18 ]]; then echo "\\W"; else echo "\\w"; fi`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'
转换为不太麻烦的代码:
_prompt_f() {
if [[ $? = "0" ]]; then
PS1='\[\033[32m\]'
else
PS1='\[\033[31m\]'
fi
PS1='\[\033[0;33m\][\!]'"$PS1"'[\u.\h: '
if [[ "$(pwd | wc -c)" > 18 ]]; then
PS1="$PS1\W"
else
PS1="$PS1\w"
fi
PS1="$PS1]\$\[\033[0m\] "
printf '\033]0;%s:%s\007' "$(hostname -s)" "$(pwd)"
}
PROMPT_COMMAND=_prompt_f