我是新手,我想使用 linux bashrc

我是新手,我想使用 linux bashrc

我是 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

相关内容