根据 zsh 中的用户或 root 更改提示颜色

根据 zsh 中的用户或 root 更改提示颜色

在 zsh 中,您可以%#在您的PS1(或任何PROMPT变量)中添加一个,这基本上意味着显示%用户或显示#根。我想知道是否有任何方法可以影响此问题,以便%#改变颜色取决于它是用户还是根(红色代表根,蓝色代表用户),明显的方法就是改变PS1我的根中的~/.zshrc,但考虑到这已经是一个特殊的符号,我想知道是否没有一种方法可以PS1对两者使用相同的符号...特定%#于 zsh 的东西(我确信还有其他我可以做的黑客,比如if then 语句)。

答案1

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

应该%m如果您是 root,请尝试将主机名 ( ) 更改为不同的颜色(红色)。我没有 zsh shell 来测试它,但它看起来是正确的。

原因如下:

%(x.true.false):: 根据三元组第一项的评估,执行正确的语句。 '!'如果 shell 具有特权,则为 true。其实%#就是一个捷径%(!.#.%)

%{\e[1;31m%} %m %{\e[0m%}::%{\e[X;Ym%}是颜色转义序列,其中 X 作为格式(粗体、下划线等),Y 作为颜色代码。请注意,您需要围绕要更改颜色的术语打开和关闭序列,否则该点之后的所有内容都将是任何颜色。%m为了清楚起见,我在提示术语周围添加了空格。

http://www.nparikh.org/unix/prompt.php围绕颜色表以及 zsh 的其他可用选项有更多选项和详细信息。

答案2

autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#测试 shell 是否以 root 身份运行。更改此设置以%(!测试 shell 是否以提升的权限运行(涵盖诸如 之类的内容newgrp,但不以 root 身份登录)。

相关内容