このページの本文へ

前へ 1 2 次へ

Windows Info 第480回

PowerShellが使う色を変更する

2025年05月04日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回は、PowerShellのコマンドラインで使われている構文表示の色指定を変更する方法を解説する。

 通常はそのままでも構わないが、ターミナルの背景色などを明るい色にすると、見えづらくなることがある。しかし、その変更が結構面倒なのだ。

 現在の設定値は、Get-PSReadLineOptionで得られる。色を変更するには、指定されたキーを持つハッシュテーブルを作り、これをSet-PSReadLineOptionで設定する。色指定にはターミナル標準の16色から8bitカラー、24bit RGBカラーの3種類が利用できるほか、文字属性なども設定が可能だ。

 Windowsターミナルの場合、「設定」→「プロファイル」→「既定値」→「外観」→「見分けがつかないテキストの明るさを自動的に調整する」を、「なし」にしないと背景色によっては文字色が正しく表示されないことがある。色が正しく設定されていないと感じたら、この項目をチェックしたほうがいいだろう。

 なお、検証は、PowerShell Ver.7.5.0、Windowsターミナル Ver.1.22.11141.0の組み合わせでしている。

色指定を確認する

 現在の色指定は、Get-PSReadLineOptionで見ることができる。

PowerShellが使う色を変更する

Get-PSReadLineOptionコマンドの出力の後半が、構文解析されたコマンドラインの色分け定義

 コマンド出力の後方にある「CommandColor」から「VariableColor」までが、解析されたコマンドラインの色分けになっている。後述するどのような指定方法を使っても、ここでは、すべてエスケープシーケンスによって「色」(文字色、背景色および文字属性)によって表示される。

 このエスケープシーケンスは、SGR(Select Graphic Rendition)と呼ばれ、Escコードと「[」(これをCSIと呼ぶ)から始まり、小文字の「m」で終わる。この間に、数値をセミコロンで区切ったパラメーターが並ぶ。

 先頭は必ず属性や色を表すコードで、必要に応じて、RGB値や8bitカラー値などがやはりセミコロンで区切って追加される。なお、複数のコードを同居させることができるため、文字色、背景色、文字属性を1つのSGRシーケンスで表現できる。

 なお、エクスケープシーケンス自体は文字列なので、単純な文字列連結によっても複数のコードを指定することが可能だ。

 なお、16色カラーの場合、端末側の設定で、色名や色番号はそのままでRGB値を変更することができる。Windowsターミナルでは、この機能をカラースキーマと呼ぶ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン