如何使用笑脸自定义终端bash提示?


11

我试图弄清楚如何自定义终端的bash提示以使用笑脸。我想要的(如示例打击所示)是将cwd与提示符用\ n隔开,如果命令成功,则显示绿色的笑脸,如果命令失败,则显示红色的悲伤脸。

有任何想法吗?

这是受Peepcode截屏的启发。

例

Answers:


15

在花了大约半小时研究andhrimnir的代码并进行了进一步的研究之后,我终于得到了想要的东西。

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

您可以在此处找到表情符号列表,然后将其转换为换行符后看到的3位字节代码。

要得到它cwd,我所要做的就是使用\w。您也可以通过这样做显示当前用户\u@\w,这将输出类似的信息joshsmith@~


6

上面显示的笑脸似乎是Unicode字符0x263a。因此,您将需要一个支持unicode的终端(不知道terminal.app是否支持此功能,我想它确实支持)。

这是示例代码,该代码打印绿色笑脸,返回码为0,否则为红色皱眉。

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

归功于Arch论坛上的Fingel(他在此处发布了此文章)。


if / then示例的出色工作。我很好奇如何换行,删除$,实际上使用Unicode符号,并使其显示为full cwd
乔什·史密斯

...一个小时后,回答了我自己的问题(谢谢!)。
乔什·史密斯

1
很高兴我能帮上忙!如果您想更深入地了解自定义$PS1内容,我上面发布的链接中的线程中包含很多信息。
jake-low,

是的,我一半的研究就是从那个线程开始的。超级有帮助。此外,对于任何想在命令行上更深入了解的人,Peepcode都有出色的高级截屏。
乔什·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.