KornShell 中的彩色提示

Kaz*_*ark 11 colors prompt ksh

根据这个 StackOverflow 帖子,在 KornShell 中可能有一个彩色提示。我一直无法弄清楚如何做到这一点。我可以使用颜色:

echo -e "\033[34mLinux\033[00m"
Run Code Online (Sandbox Code Playgroud)

给出蓝色的“Linux”输出,如下所示:

printf "\033[34mLinux\033[00m"
Run Code Online (Sandbox Code Playgroud)

但是,当我将转义码合并到我的PS1提示变量中时,它们并没有被转义。我需要做什么才能获得彩色提示?除了对 eyecandy 的吸引力之外,我发现彩色提示在视觉解析输出时很有用。

man*_*ork 11

只需使用文字 Esc 字符,输入Ctrl- v, Esc(将显示^[在屏幕上):

PS1="^[[34mLinux^[[00m"
Run Code Online (Sandbox Code Playgroud)

或者使用echo您发现正在运行的命令的输出:

PS1="$(echo -e "\033[35mLinux\033[00m")"
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 5

您需要在PS1变量中放置一个文字转义字符。Ksh88 和诸如 pdksh 和 mksh(旧版本)之类的克隆没有控制字符的文字语法,除了通过print内置的。Mksh 理解\e转义,但 pdksh 需要八进制代码\033

PS1=$(print '\033[34mLinux\033[00m')
Run Code Online (Sandbox Code Playgroud)

ATT ksh93 引入了反冲转义的文字语法$'…'(自 R39b 起也可用于 mksh)。您可以使用反斜杠转义将控制字符放入这些文字中。

PS1=$'\e[34mLinux\e[00m'
Run Code Online (Sandbox Code Playgroud)

  • 实际上,`mksh` 也支持`$'...'` —— 无可否认,因为 Dave Korn(Korn Shell 中的 Korn)坚持要我添加它。 (2认同)