给定 shell 脚本 myPrompt.sh:
#!/bin/bash
printf "Llama \001\360\002\001\237\002\001\255\002\254 Llama $> "
...并且 bash 提示符配置为运行上面的脚本:
alias myPrompt="/home/you/myPrompt.sh"
PS1="\$(myPrompt)"
在上述场景中,该函数运行并生成带有 [ 的输出
答案1
shell 在处理提示时使用一些序列(如\[
和 )来执行诸如注释提示的零宽度部分之类的操作,但这些字符在直接打印时不会以这种方式解释。\]
我很惊讶 和 的\001
工作\002
方式你注意到 - 但这可能与你使用的任何字符编码有更多关系?
无论如何,要打印某些内容并在不设置提示符的情况下查看它在提示符上的样子,在 bash 中,您可以P
在变量扩展中使用 (for Prompt) 运算符:
SOME_PROMPT_STRING="\u@\h:\W\$"
echo "${SOME_PROMPT_STRING@P}"