Powershell と Cmd

Powershell と Cmd

最近、Ubuntu から Windows 10 に移行しました。Windows には PowerShell とコマンド プロンプトという 2 つの異なるターミナルがあります。これらの主な違いは何ですか?

答え1

CMD は Dos の時代から始まりました。コマンド構造がシンプルで、行単位の命令言語です。

コマンドを発行し、フィードバックを取得し、プログラムを起動するのに最も役立ちます。より複雑な操作を行うには、通常、この機能を具体的に実行するプログラムを使用する必要があります。

cmd には、コピー、移動など多くのコマンドが付属していますが、それでも基本的なタスクを実行することを目的としています。

PowerShell は、コマンド プロンプトの拡張版である、より高度な言語です。.net フレームワークを使用して、Linux 用の bash の Windows 版として作成されました。すべてのコマンドは Powershell にネイティブであり、任意のプログラムの出力と対話して、さらに多くのことを行うことができます。

それらの主な違いは何ですか?

cmd は習得が非常に簡単な言語ですが、できることは非常に限られています。

Powershell は非常に複雑な言語で、bash などの他の言語も知っていなければ習得するのは簡単ではありません。しかし、いったん習得すれば、可能性の世界が広がります。Powershell の強みは、コマンドをパイプでつなぐこと (あるコマンドの出力を次のコマンドにリダイレクトし、さらにそのコマンドを次のコマンドにリダイレクトするなど) と、その出力を使用して、より便利なものに編集し、それを表示または保存できることです。

答え2

バッチと PowerShell の間には共通点はあまりありません。

Batch は 30 年前から存在しており、唯一の大きな拡張は MSDOS から Windows への変更によって行われました。

バッチは、単純なコマンドと非常に基本的な文字列/数学演算のみをサポートしています。
最も必要な機能を独自に構築することは可能です。それは私にとって楽しいことだしかし、
信頼性が高く、保守性が高く、万全なスクリプトを作成するのは非常に難しいため、生産性の高いスクリプトを作成するためにこれを使用しません (何を言っているのかはわかっています)。

Powershellは完全に独自の構文スタイルを持っており、他のシェルとは互換性がありません。.NET
オブジェクトに基づいており、コマンドはテキストではなくオブジェクトに対して機能します。
バッチよりもはるかに強力ですが、PowerShellはMicrosoftの新しいシェルのようなものです。未来ツールは死んだ馬だ。
マイクロソフトが次のツールに置き換えるまで、数年間は存続するだろう。未来道具。

私見ですが、構文を学ぶ価値はありません。

個人的には、Windows では git-bash または cygwin を使用しています。しかし、生産性を高めるために、ほとんどの場合 Linux システムで作業しています。

関連情報