Rob*_*Rob 37 bash prompt colors ansi-escape
我已经做了一些事情来破坏OS X(10.5.7)终端中的Bash Shell提示符.
这是我配置的PS1:
PS1='\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]\$ '
Run Code Online (Sandbox Code Playgroud)
据我所知,我有正确的颜色命令逃逸.然而,当我在命令历史中向上和向下滚动时,如果历史命令包裹在多行上,我经常会遇到换行问题.
我将提示简化为以下内容:
PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '
Run Code Online (Sandbox Code Playgroud)
我仍然看到类似的东西:
localhost:~/Library/Application Support/Firefox/Profiles/knpmxpup.Defau
lt/extensions/{1A2D0EC4-75F5-4c91-89C4-3656F6E44B68}$ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E export PS1="\[
\e[1;32m\]\h\[\e[0m\]: cd Library/Appl
ication\ Support/
我也试过\033而不是\e.我刚刚将PS2包含在那里以获取信息,我没有从安装默认值中更改它.如果我完全删除颜色代码,那么一切正常,任何想法?
Rob*_*Rob 49
我现在使用这个PS1效果很好:
green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "
Run Code Online (Sandbox Code Playgroud)
滚动我的命令历史记录似乎现在处理换行.然而在此期间,由于这个问题被问到,我还将OS X更新为10.6.3
wil*_*dye 20
这个stackoverflow线程似乎相关.正如有人在该主题中提到的那样,mywiki.wooledge.org上的Bash FAQ讨论了如何在Bash提示(FAQ 53)中正确引用颜色代码,以及正确调用终端颜色(FAQ 37).
Bash 中的换行问题并不是什么新鲜事。您PS1应该按原样工作,但 Bash 3.2.49 中存在一个错误。查阅邮件列表,还有一个关于此的错误已确认已在 4.0 中修复。
除了用\[和标记不可打印的字符外,您不能做更多的事情\],其余的必须由提示代码完成。