ネット上の解説は、MacやLinuxを前提に書かれているものが多くあります。Windowsで同じことをやろうとすると、同じに見えて動きが違うところがいくつかあります。知っておくと無駄に悩まずに済みます。
(ターミナルの開き方そのものはWindowsでターミナルを開くにあります。)
Ctrl+Cは、コピーと中断を自動で使い分けている
これがいちばんの驚きポイントです。
ターミナルの世界では伝統的に、Ctrl+Cは「今動いているものを止める」合図です。暴走した処理を止める非常ボタンとして使います。一方、Windowsの一般的なアプリではCtrl+Cは「コピー」です。
この2つがぶつかります。 Windows Terminalはこれを、こう解決しています。
文字を選択していれば → コピー
何も選択していなければ → 中断の合図としてそのまま送る
Windows ターミナルのアクション(Microsoft公式)の「コピー」の項に、はっきり書かれている仕様です——「選択したターミナル コンテンツがクリップボードにコピーされます。何も選択されなかった場合は、キー コードが端末に直接送信されます」。つまり、普段どおりの感覚で使って大丈夫なのですが、この動きを知らないと「止めたいのに止まらない」という場面で混乱します。止めたいときは、まず選択を解除してください。 そのうえでCtrl+Cです。
なおCtrl+Shift+C(コピー)とCtrl+Shift+V(貼り付け)も使えますし、マウスの右クリックでもコピペできます。 迷ったら右クリックが安全です。
UNIXコマンドは、意外と通じる
lsやcdはUNIX系の世界のコマンドなので、Windowsでは通じないと思われがちです。が、PowerShellでは通じます。
| 打つと動くもの | 実際に呼ばれているもの |
|---|---|
cd |
Set-Location |
ls |
Get-ChildItem |
pwd |
Get-Location |
cat |
Get-Content |
cp / mv / rm |
Copy-Item / Move-Item / Remove-Item |
clear |
Clear-Host |
PowerShellが別名(エイリアス)を用意してくれているので、UNIX系の名前でも呼べる、という仕組みです。
ただし、オプションは通じない
ここが落とし穴です。名前が同じでも、中身は別のコマンドなので、-で始まるオプションの書き方が違います。
ls -la ← Macでは動く。Windowsではエラーになる
「コマンド名は通じるが、オプションは通じない」と覚えておいてください。詳しい指定をしたくなったら、素直にPowerShell側の書き方を調べるほうが早いです。エージェントに「これのWindows版は?」と聞けば教えてくれます。
逆に、無いもの
grepやtouch、head、tailといったあたりは、別名が用意されていません。Windowsではそのままでは打てません。
エージェントを使っていると、こういう場面ではエージェント自身がWindows向けの書き方に直してくれることが多いので、あまり身構えなくても大丈夫です。
注意:これは「Windows版のPowerShell」の話
紛らわしいのですが、PowerShellはMacやLinuxにもインストールできます。 そして、そちらではlsの別名は用意されていません(本物のlsが動いてほしいので、あえて外してあります)。
「PowerShellだからlsが動く」のではなく、「WindowsのPowerShellだから動く」というのが正確なところです。
覚えておきたいこと
- 止めたいときの
Ctrl+Cは、選択を解除してから - コマンド名は通じても、オプションは通じない
- 困ったらエージェントに「Windowsだとどう書くの?」と聞く — これがいちばん早い
最後のものが、実はこのサイトの結論そのものです。環境ごとの細かい違いを全部覚える必要は、もうありません。