Powershellプロンプトを色付けする方法は?


17

私はいつもプロンプトをLinuxでこの色にするようにしています。それから 、黒いコマンドウィンドウで入力を見つけることができます。しかし、Powershellで同じ色を作成できますか?


コンソールフォントとは何ですか?
ドミトリークドリャフツェフ

@DmitryKudriavtsev これを、多分それは英語のシムの歌でしょう。
ヨデ

これは多分SimSunですか?
ドミトリークドリャフツェフ

@DmitryKudriavtsevはい、すみません、間違えました。
yode

あなたのせいではなく、音訳は難しいです
ドミトリー

回答:


32

色付きプロンプトのスクリーンショット

PowerShellプロンプト

あなたがしたいことは、プロンプトをカスタマイズすることです。

PowerShell 3.0以降のデフォルトのプロンプトは次のとおりです。

function prompt  
{  
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "  
}

カラーエスケープシーケンス

さて、Windowsの10 をサポートANSIエスケープコードのconhostでは、と24ビットカラーは 1703年以降でサポートされています。

ANSIエスケープコードのいずれかを使用するには、リテラルESC文字が必要です。これは、033進、またはbashで小数点以下27である、あなたは使います"\033""\e"。PowerShellには直接同等のシーケンスはありませんが、代わりに式を埋め込むことができます。"$([char]27)"

PowerShell Core "`e"では、代わりにエスケープシーケンスを使用できます。asherberのコメントに感謝します。


PowerShellで使用する

これは、たとえば、次のエスケープシーケンスを使用して、コードで背景色をシアンに設定できることを意味します46

"$([char]27)[46m"

次のように使用できます:

echo "$([char]27)[46mColoured text"

読みやすくするために、変数を定義しましょう:

$ESC = [char]27

したがって、次を使用できます。

"$ESC[46m"

どこ$ESCリテラルESC文字は、ある[のparamリストの開始、および定義m終了を。

コマンドで使用する:

echo "$ESC[46mColoured text"

元の色設定を復元するには、0代わりにコードを使用します。

echo "$ESC[46mColoured text$ESC[0mUncoloured text"

より高度な色

基本的な16色のパレットに満足できない場合は、フォームで完全な24ビットカラーを使用できます。

"$ESC[48;2;<r>;<g>;<b>m"

<r>0〜255の赤<g>、緑、<b>青の10進数値はどこにありますか。"$ESC[48;2;255;0;123m"

詳細については、ドキュメントを参照してください。

実際、これはbashで行うこととまったく同じですが$ESC\eorの代わりに(定義した後)使用する必要があります\033


色付きのプロンプトを設定する

これらをまとめると、変更されたプロンプトでANSIカラーエスケープコードを使用して背景色を変更できます。

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

持続性

これをセッション間で保持したい場合は、プロファイルに追加します(など.bashrc)。でプロファイルへのパスを表示できます$profile


こんにちは、それは素晴らしい答えです。しかし、さらに、テキストを太字にすることはできますか?それから、もっと簡単に見つけることができます。
yode17年

1
@yode多かれ少なかれすべてここに文書化されていますが、答えでリンクしました;)
ボブ

1
@yodeあ。37個の明るい白ではないものと比較すると、PowerShellウィンドウはデフォルトで既に97個の明るい白を使用しているように見えます。(ところで、次のWin10バージョンのクリーンインストール用の新しいカラーパレットがあります。現在のパレットのスクリーンショットがいくつかあります。これ1;37m97m、両方とも「明るい白」を意味することに注意してください)
ボブ

1
@yode基本的に、conhostはボールドをまだサポートしていません。明るい色は太字の代わりであり、デフォルトではすでに明るい色を使用しています。太字が本当に必要な場合は、ConEmuなどの代替端末を使用できますが、ANSI太字のサポートも完全ではないようです。IMO、それはトラブルの価値はありません。
ボブ

1
Markdownを正しく動作させることはできませんが、PowerShell Coreではbacktick + e forを使用できます[char]27。これが以前のバージョンで追加されたかどうかはわかりません。
19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.