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


13

在zsh中,您可以%#在您的PS1(或任何PROMPT变量)中使用a,这基本上意味着%在用户情况下显示,#在root 用户情况下显示。我想知道是否有任何方法可以影响此效果,从而使%#根据用户或根更改颜色(根为红色,用户为蓝色),显而易见的方法是更改PS1根中的,~/.zshrc但是考虑这已经是一个特殊的符号,我想知道是否可能没有办法PS1对两者都使用相同的东西…… %#zsh 特有的东西(我敢肯定,还有其他一些我也可以这样做的技巧) if语句)。

Answers:


8

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

如果您是root用户,那应该可以将主机名(%m)更改为其他颜色(红色)。我没有zsh shell可以对其进行测试,但它看起来正确。

原因如下:

%(x.true.false)::根据三元组第一项的求值,执行正确的语句。'!' 如果外壳程序具有特权,则为true。实际上%#是的捷径%(!.#.%)

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

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


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

%(#测试外壳程序是否以root用户身份运行。更改此项以%(!测试外壳程序是否以提升的特权运行(这涵盖了诸如之类的内容newgrp,但不是以root用户身份登录)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.