zshのユーザーまたはルートに応じてプロンプトの色を変更します


13

zsh %#では、基本的にユーザーの場合に表示するか、ルートの場合に表示することを意味するin PS1(または任意のPROMPT変数)を%使用できます#。私はこれに影響を与えるどのような方法がある場合はそのことを思ったんだけど%#、それは、ユーザまたはルート(rootの赤、利用者のための青)だかどうかに応じて色を変更する明白な方法は、単に変更することであるPS1私のルートの中で~/.zshrcはなく検討しますこれはすでに特別なシンボルですのでPS1、両方に同じものを使用できる方法はないのではないかと考えています... %#zshの場合のように特定の何かがあります(他にも好きなハックがあるはずですif thenステートメント)。

回答:


8

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

それはすべきである(ホスト名を変更する作業%mは、rootであれば)別の色(赤)。テストするためのzshシェルはありませんが、正しく見えます。

その理由は次のとおりです。

%(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]%} "

%(#シェルがルートとして実行されているかどうかをテストします。これを変更して%(!、シェルが昇格された特権で実行されているかどうかをテストします(これはのようなものをカバーしますがnewgrp、rootとしてログインしません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.