Shell

根據 zsh 中的使用者或 root 更改提示顏色

  • October 8, 2010

在 zsh 中,你可以%#在你的PS1(或任何PROMPT變數)中有一個,這基本上意味著%如果使用者顯示,或者#如果 root 顯示。我想知道是否有任何方法可以影響這一點,以便%or#更改顏色取決於它是使用者還是 root(root 為紅色,user 為藍色),顯而易見的方法只是更改PS1我的 root 的~/.zshrc但考慮這已經是一個特殊的符號我想知道是否可能沒有一種方法可以PS1對兩者都使用相同的… %#if then 語句)。

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

如果您是 root,這應該可以將主機名(%m)更改為不同的顏色(紅色)。我沒有 zsh shell 來測試它,但它看起來是正確的。

原因如下:

%(x.true.false):: 根據三元的第一項評估,執行正確的語句。’!’ 如果 shell 是特權的,則為 true。其實%#是一個捷徑%(!.#.%)

%{\e[1;31m%} %m %{\e[0m%}:: the%{\e[X;Ym%}是顏色轉義序列,其中 X 為格式(粗體、下劃線等),Y 為顏色程式碼。請注意,您需要圍繞要更改顏色的術語打開和關閉序列,否則該點之後的所有內容都將是任何顏色。為了清楚起見,我在提示詞周圍添加了空格%m

http://www.nparikh.org/unix/prompt.php有更多關於顏色表的選項和詳細資訊以及 zsh 的其他可用選項。

引用自:https://unix.stackexchange.com/questions/1397