0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windowsに黒い画面が2つあるけど何が違うんだ

0
Posted at

僕はエンジニアなので黒い画面をよく使うことがあります
黒い画面とはターミナルやコマンドライン、コマンドプロンプトと呼ばれています。

プロジェクトでCurlコマンドを使ってAPIを叩くことがあるのですが、このときMacとWindowsで動作が異なっており、さらにWindowsでもコマンドプロンプトとPowershellで異なっていたので今回まとめてみようと思います。

PowerShellとコマンドライン(cmd)の違いとは?なぜ別なのか?

✅ 結論:目的・設計思想が根本的に異なるから
🧱 背景:Windowsの2つの「シェル」
項目	コマンドプロンプト(cmd.exe)	PowerShell
開始時期	1980年代(MS-DOS由来)	2006年(Windows PowerShell v1.0)
主な目的	バッチ処理や簡易システム操作	オブジェクトベースの自動化とスクリプト
実行結果	文字列(テキスト)	.NETオブジェクト
互換性	MS-DOSと高い互換性	UNIXシェルとはやや異なる設計
標準構文	copy, dir など	Get-ChildItem, Get-Process など

🤔 なぜ「PowerShell」が作られたのか?
✔ CMDの限界
for や if 文が独特で使いづらい

文字列しか扱えないため、構造化データ(JSON/XML/CSVなど)の操作が大変

エラー処理も弱く、スクリプトの拡張性に乏しい

✔ PowerShellの誕生理由
システム管理をより強力に自動化するため
.NETの機能を活かし、オブジェクト単位で処理できるシェルが必要だった
UNIX系シェルの思想を参考に、本格的なスクリプト言語として設計された

💥 実際に混乱するポイント:たとえば curl
コマンド	cmd	PowerShell(v5以前)
curl	curl.exe 実行	実は Invoke-WebRequest の別名
echo hello > file.txt	ファイルに文字列を出力	同じように見えて PowerShell では挙動が微妙に異なることも
※ PowerShell 7 では curl は curl.exe を使うようになって改善されています。

AIによるとこんな回答だった。
簡単な対応だとコマンドプロンプトでいいよとのことだった。
自動化みたいに難しいことをするなら確かにPowershellで良さそう。

Curlコマンドで使ってもらうAPIを公開していますが、WindowsでCurlコマンドを共有して使いたいシーンが出てきました
MacのターミナルとWindowsのコマンドプロンプトで少し挙動が異なるため、OS差分による使いづらさが発生して悲しい気持ちに。
コマンドプロンプトだとダブルクォーテーションをエスケープしないとならないため、powershellを使うことにしました。

まとめ

🤔 どれを使えばいいの?
利用目的	おすすめ
Windowsの最新管理タスクを自動化	✅ PowerShell

古いWindows向けの互換性重視	✅ cmd

Linux/macOSでの開発・サーバー管理	✅ bash/zsh

古いからと言ってすぐには切り離せないのはよくある話ですね!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?