Windowsのコマンドプロンプトだって嘘をつく

# コマンドプロンプト、カスタマイズしてますか？
## デフォルトの「黒窓」
普段からCUI環境に慣れてる人なら、Windowsのコマンドプロンプトをよく使う方も多いのではないでしょうか。皆さんのイメージするコマンドプロンプトって、こんな画面ですよね？
![20210401_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/888f2509-efa6-156f-1707-8bafd6834935.png)
## 気分を変えたいときは
たまには、背景色や文字色を変えてみたい！というときは、右クリックして、こんな風にRGB指定して設定しますよね？
![20210401_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/8c747278-e66d-ae11-cb7f-8de5e8971888.png)
## でもコレ、面倒臭くない？
でも、いちいち背景色と文字色を変えるのにそれぞれにRGB値を入力するの、面倒臭くないですか？例えば、自分が変更したい色のカラーコードを知らなかったり16進数表記に慣れていていちいち10進数表記に変換するのが面倒臭かったり・・・。せっかくCUI環境使ってるんだから、コマンドで色を変えられないの・・・？
# 実はコマンドで色を指定できます！
## colorコマンドの使い方
コマンドプロンプトで、

```cmd.exe
C:\>color ?
```

と打ってみましょう。すると、colorコマンドの使い方の説明が表示されます。
![20210401_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/04b76517-a897-a09d-cd0e-7f690611ab0c.png)
colorの後に半角スペースを空けて、背景色・文字色をそれぞれ1桁の16進数で指定することができます。大文字・小文字は問いません。例えば、背景色を「灰色」、文字色を「輝く白」にしたい場合は、

```cmd.exe
C:\>color 8f
```

と打てば、
![20210401_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/1ed68949-4d20-ac1e-07d0-2353c88f9568.png)
こんなイメージになります。しかし「輝く白」って表現、何なんでしょうね(笑)
## Windows10のデフォルト配色はこんな感じ
実際にWindows10のcolorコマンドに割り当てられている16色はこんな感じです。
![20210401_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/ca602047-fa13-e331-3fbc-aba3363984d9.png)
派手に「背景色：赤、文字色：明るい黄色」でやりたい！って場合は、

```cmd.exe
C:\>color 4e
```

こんな感じです。
![20210401_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/6fe47cc2-6dbc-3e14-744d-4822ef2d9906.png)

## 既に右クリックでカスタマイズしていると・・・？
ところが、右クリックで既に設定を変更してしまっている場合は・・・？！
![20210401_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/c9ae29d0-a2b5-2472-2225-f3cf2ca5bb3b.png)
例えば、こんな配色にカスタマイズしてしまっていたとします。
## とりあえずcolorコマンドの用法を聞いてみる

```cmd.exe
C:\>color ?
```

すると、やはり先ほどと同じ説明が返ってきます。
![20210401_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/cd6a6ecc-7d95-1658-89c7-d7a15380c8f5.png)
0からFまで、全く同じ説明ですね。
# じゃあ、本当にそうなんだな！？
この説明を信じて「背景色：緑(2)、文字色：白(7)」にしてみましょう。

```cmd.exe
C:\>color 27
```
すると、なんと・・・！！
![20210401_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/fb3ef399-40ba-e626-96a9-6074709b1f86.png)
「背景色：黄色、文字色：青」になってしまったではないか！！！
# コマンドプロンプトが嘘をついた！！
はい、コマンドプロンプト側は、ユーザーが右クリックでどのようにカラーパレットを設定したかなんて完全無視。色設定を変えたのに、説明では最初と同じ色が割り当てられてるなんて、おかしいですよね？
### colorコマンドが返すのはあくまで16進数に割り当てられた色
たとえば、こんな配色に設定していたとすると、
![20210401_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/88c339d0-350b-eb5f-d3a0-853993e22e8a.png)
colorコマンドで入力した16進数の位置に設定されている色を返してくるのです。

```cmd.exe
C:\>color ?
```

ではいつも同じコトしか言わないのに、配色をカスタマイズしても、そこにどんな色を設定したかなんて、見ていないのです！やっぱり、コマンドプロンプトは、嘘つきですね！

# 今日はエイプリルフールです。
投稿日すなわち今日、2021年4月1日（木）は、エイプリルフールです。人間だけじゃなく、コンピュータだって嘘をつきたいでしょう。そこで、実際にコンピュータにエイプリルフール当日に嘘をつかせてみたのです。如何だったでしょうか。面白かった！という方は是非LGTMをお願いします！！

2023年3月20日（月）追記

Windows11になっても、説明は全く同じですが、色調が微妙に変わったようです。


![win11_setsumei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/7dd5b8b8-033e-0c72-548c-993919881f94.png)

こんな感じです。

![cmd_palette.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666984/ce476b4f-a6c3-84ab-6789-1bd337189d4f.png)