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

Jos*_*ith 11 bash command-line terminal.app macos

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

有任何想法吗?

这是受到 Peepcode 截屏视频的启发。

例子

Jos*_*ith 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\]"
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到表情符号列表,然后将它们转换为您在换行符后看到的 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\]"
Run Code Online (Sandbox Code Playgroud)

归功于 Arch 论坛上的 Fingel(他在这里发布了它)。