PowerShell7とは何なのだ。と思ったのでザッとまとめた。

PowerShell7を語る前に、ターミナルのことについて話していきます。

#Windowsのターミナルとは

MacにターミナルがありCLI操作ができるように、Windowsにも同様なものが存在しCLI操作ができます。

しかし現在、Windows10には大きく分けて3種類あります。

>・コマンドプロンプト（Command Shell）
>・Windows PowerShell
>・PowerShell7

![スクリーンショット 2021-03-20 112234.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/ec1f35b1-59d3-e08c-40dd-d8aa578c98d6.png)
この3つです。

始めの２つはもともと入っているターミナルになります。

デフォルトはコマンドプロンプトかと思います。PowerShellと切り替えて使うことができます。

そして2020年、PowerShell7が登場し、計３種類のターミナルがWindowsで使えることになっています。
<br>
なんで**３つ**も似たやつがあるんだ!?

そう思うでしょう？

私もそう思います🙄

<br>
#Windowsのターミナルたちの違い

私の感覚も含めて簡単にまとめているので、全てを説明しきれないので悪しからずです。

####コマンドプロンプト

昔の私のように、普段あまりCLI操作もすることがない人はWindowsのデフォルトであるコマンドプロンプトでそれなりのコマンド操作はできます。

例えば、
ディレクトリの中身をlsで確認するとか、CLIで電卓を出すとか（あるか？
🤤）、あるフォルダのディレクトリパスを別のフォルダに遷移するように設定するとか（あるか？🤤）、、

ただ、後でも言いますが使えないコマンドが多いので、エンジニアには不向きかと思います。

<br>

####Windows PowerShell

Windows PowerShellとは、俗にPowerShellと言われるものです。

PowerShellと言うとこれを指すかと思います。

これはもともとWindowsに入っているので、コマンドプロンプトと切り替えたり単体で使うことができます。

これはコマンドプロンプトに比べると、速度が速い、使えるコマンドが多いと言われていますが、さほど変わりない印象です。

<br>

####PowerShell7

先のWindows PowerShellを開くと、去年2020年からこんな表示が出てくるようになりました。

![ps-version_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/b189405d-fa4d-8fed-4ff7-56b6f2901dc0.jpeg)


要は、新しいPowerShellに変えろと言うことです。

これを見た私は、アップデートのことかな？と思い、バージョンを確認して新しいからいいやと思っていました。

しかし、表示が消えないのです。。
<br>
そのため、リンクを調べたら、【[Microsoft公式リンク](https://aka.ms/pscore6)】

**PowerShellとPowerShell７は違う。。！**
<br>

なにっっ！
<br>
名前は同じ、中身は違う。その名は**PowerShell7**！🧐
<br>

調べると、、、

分からないぞ。。


Microsoft 公式ドキュメントが言っている内容を咀嚼するのになんと時間がかかることか、、
<br>

初心者にはまあ難しい。

それに加えて、`PowerShell7は同じPowerShellと思っている私`は混乱の極みでした。


<br>

#PowerShell7を簡単に理解する

特徴やポイントをランダムに挙げます。


**①PowerShell7はPowerShell（Windows PowerShell）ではない。**

別物と思った方が良いです。


なぜなら、新たにインストールが必要なアプリだからです。

もともとWindowsに存在するPowerShellをアップデートするとかいう話ではありません。

`一つのアプリとしてインストールしましょう。`

そういうことです。

（インストール方法は別でまとめるかもしれない。）


<br>

**②使えるコマンドが多い**

`Mac`ならターミナルで叩けるコマンドがWindowsのデフォルトShellで使えないという悲しい現実。

また、**WSL**(Windows Subsystem for Linux)ができたこともあり、叩けないコマンドがあるのは困るよね。。
<br>
なので、PowerShell7ができたのです！

と思っておきます🙄

これでいくつかのコマンドが叩けるようになりました！

<br>

例を挙げると、

**●　&&　||　などのパイプラインの演算子**

Pipeline Chain Operatorsというパイプライン演算子と理解しているコマンドです。

左が真なら右を実行する。
左が偽なら右を実行する。などのコマンドです。


これらは旧PS（今後PowerShellはPSで表記）にはありませんでした。

叩こうものなら赤字のエラーです。😥🥱
<br>
LPICやDockerの勉強したときに、ちょうど&&がでてきたのですが、旧PSでは使えなくて泣いたことを覚えています。

Linux環境ではお目見えすること多いかもです。

<br>
**三項演算子（条件演算子）**

JavaScriptでコードを書く際にも出てきたりするものです。

これもまた旧PSでは認識できないコマンドでした。

PowerShell7では下記のようにできました。感動✨🥺
![sanko-enzan 2021-03-20 114442.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/d980a1c6-c860-7c92-2cfd-cef50eaf242e.png)

<br>
**エラー表示が簡易化された**

例えば、おかしなコマンドを叩いたとしましょう。

旧PS　
![ps-error-o2021-03-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/2ac353bd-8c44-b94a-fc1c-acd56bc53ed9.png)
↓
新PS
![ps-error-n2021-03-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/b271857b-9515-d601-aae4-77419d3276ba.png)

赤字のエラー文が1行で収まっています。

エラーを見るストレスが減りますね😇💦

<br>
**NULL演算子**

今のところ、個人的にはあまり使う機会がありませんが、これも使えるようになったそうです。

<br>


まだあるっぽいですが、私の言いたいことは、`使える機能が断然、新PSの方が多いので、こっちを使おう！`です。

そんなとこでしょうか。

<br>
###気になること

PowerShellのアップデートがいまいち分からない。
![PS7-update.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139248/bd3c91dc-1b3b-7b4f-b3f0-36db838d0444.png)

アップデートがある際はPSを開いたときにグレーの背景の文字が出てきて、新しいバージョンが使えるぜぃ♪と出てきます。

おそらくCLIでできるはずなのですが、

あまり出くわすこともないのでまだよくわかっていません。

なので、私は新たに、msiファイルをダウンロードしてインストールするという手間のかかることをしているのは内緒です🤫🙊

いい記事があったので、次のアップデートがそちらを参考にしたいなとも思っています。


##まとめ

特にまとめることはありませんが、

WindowsでプログラミングやWSL操作をするときは、ターミナルはデフォルトの*コマンドプロンプト*や*PS*ではなく、**PowerShell7**を是非インストールして使ってほしい。

以上です。

<br>