根据这个 StackOverflow 帖子,KornShell 中可能会有彩色提示。我一直不知道该怎么做。我可以使用颜色:
echo -e "\033[34mLinux\033[00m"
给出蓝色的“Linux”输出,如下所示:
printf "\033[34mLinux\033[00m"
但是,当我将转义代码合并到PS1
提示变量中时,它们并没有被转义。我需要做什么才能获得彩色提示?除了看起来很吸引人之外,我发现彩色提示在直观地解析输出时很有用。
答案1
只需使用文字 Esc 字符,输入Ctrl- v, Esc(将显示^[
在屏幕上):
PS1="^[[34mLinux^[[00m"
echo
或者使用您发现有效的命令的输出:
PS1="$(echo -e "\033[35mLinux\033[00m")"
答案2
您需要在PS1
变量中放置一个文字转义字符。 Ksh88 以及 pdksh 和 mksh(旧版本)等克隆版本没有控制字符的文字语法,除非通过print
内置的。 Mksh 理解\e
转义,但 pdksh 需要八进制代码\033
。
PS1=$(print '\033[34mLinux\033[00m')
ATT ksh93 引入了反斜杠转义文字语法$'…'
(自 R39b 起也可在 mksh 中使用)。您可以使用反斜杠转义符将控制字符放入这些文字中。
PS1=$'\e[34mLinux\e[00m'
答案3
我将这些用于mksh
用户shell
:
# custom prompt see http://comments.gmane.org/gmane.os.miros.mksh/126
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ | \a\e[36m\a${USER:=$(ulimit -c 0; id -un 2>/dev/null || echo
\?)}@${HOSTNAME%%.*}\a\e[34m\a | ^ ^ ^ ^ | \a\e[0;33m\a$(local d=${PWD:-?} p=~; [[ $p = ?(*/) ]] || d=${d/#$p/~};
print -nr -- "$d")\a\e[1;34m\a |\n ^ ^ ^ ^ | \a\e[32m\a$(date +%H:%M)\a\e[34m\a | ^ ^ >>\a\e[0m\a '
&稍有不同shell
:root
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ ^ \a\e[31m\a${USER:=$(ulimit -c 0; \
id -un 2>/dev/null || echo \?)}@${HOSTNAME%%.*}\a\e[34m\a ^ ^ ^ ^ ^ ^ ^ \a\e[0;33m\a$(
local d=${PWD:-?} p=~
[[ $p = ?(*/) ]] || d=${d/#$p/~}
print -nr -- "$d"
)\a\e[1;34m\a ^ ^ \n ^ ^ ^ ^ ^ \a\e[32m\a$(date +%H:%M)\a\e[34m\a ^ ^ ^ ^ \a\e[0m\a '
由于特殊字符没有复制,这是一个pastebin粘贴对于普通用户和 root 用户。
答案4
感谢之前的答案和其他来源,我能够想出这些:
Korn shell 提示:
PS1="$(echo "\033[32m`logname`\033[35m@\033[32m`hostname` \033[33m`pwd`\033[36m\n\$\033[0m")"
重击提示:
PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"
它们给出相同颜色的提示(是的,我说女王英语;)),格式如下:
username@computername /current/working/directory
$
DOS 等效项(尽管没有颜色选项)是:
prompt %username%@%computername% $P$_$G
这使:
username@computername /current/working/directory
>
“>”将其保留为“DOSsy”而不是带有“$”的“nixy”,但如果您想要印记(“$”),那么它将是:
prompt %username%@%computername% $P$_$$
如果您的登录帐户具有必要的权限,则可以使“nixies”永久地在它们前面加上“export”:
export PS1="..."
并将 DOSsy 更改为:
setx PROMPT "%username%@%computername% $P$_$G"
或者
setx PROMPT "%username%@%computername% $P$_$$"