根据man bash
,在PS1
环境变量中(定义shell提示符):
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\] end a sequence of non-printing characters
根据我见过的各种例子,我应该用\[
和\]
包围非打印字符序列 - 但它似乎并不是我是否包括它们会有所不同!
例如:
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n[\t]\$ '
似乎与以下方面没有区别:
export PS1='\e]0;\w\a\n\e[32m\u@\h \e[33m\w\e[0m\n[\t]$ '
(即相同但删除\[
和\]
。)
那么以这种方式封装非打印字符序列的优点是什么?是输出到哑终端(我从不需要这样做),以便可以忽略非打印字符? (据推测,PS1
在非交互式会话中会被忽略,因此我想在编写脚本时不会这样做。)