コマンドプロンプトの色を変える。

Windowsでコマンドプロンプトを使っていると通常は文字の色が全部白のため、スクロールバックしたときなどにどれがコマンドなのかがわかりにくくなります。


コマンドプロンプトの設定はMS-DOSのころから定番でしたが、デフォルトでは '$P$G' という設定になっています。
主なものを並べると、
  • $d: 現在の日付
  • $t: 現在の時刻
  • $p: 現在のドライブ+パス
  • $n: 現在のドライブ
  • $g: >
  • $l: <
  • $e: エスケープ文字
  • $_: CRLF
  • $$: $
たとえば、 set prompt=$d $t $p$_$$ とすると、

2018/04/12 12:00:01 C:\Users\chiyo\work
$

というプロンプトが表示されるわけです。
そして色については、エスケープシーケンスで表現します。

基本8色 (黒、赤、緑、黄色、青、マゼンタ、シアン、白)の場合、 '$e[Xm' を使います。Xのところに30〜37の文字が入ります。
例: set prompt=$e[33m$p$g$e[m プロンプトが黄色になる。

Windows10のコマンドプロンプトでは拡張エスケープシーケンスも使えるようです。 '$e[38;5;Xm' で、Xのところに0〜255の文字が入ります。
例: set prompt=$e[38;5;170m$p$g$e[m プロンプトがViolet系。

さらにRGB指定も利用できるようです。 '$e[38;2;r;g;b;m' で、RGBの値を0〜255で指定できます。
例: set prompt=$e[38;2;170;200;0m$p$g$e[m で黄色っぽい色が出ます。

どの場合でももとに戻すときには '$e[m' を使います。

プロンプトに設定せずに色を簡単に試すには、CTRL-[ を使います。これは '$e' を置き換えると考えればよいです。以下の例では '@' のところで CTRL-[ を入力します。

echo @[38;2;60;60;220mhello@[m

となって、色で遊ぶのはここまでにして、問題はコマンドプロンプトを開くたびにカラープロンプトが設定できるようにすることです。MS-DOSやWindows 3.xのころには Autoexec.bat などというバッチファイルで指定したのですが、Windows 10だとどうなるのでしょうか。

なんと、「環境変数 PROMPT」に設定するようです。なので「システムの詳細設定」から「環境変数」へ進み、「ユーザー環境変数」に新規で「PROMPT」という設定を追加すればOKです。
となると、管理者コマンドプロンプトは別の色にしたいとかの希望も出てきますが、それはまたそのうち。

0 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...