三つのタブと「翻訳」の範囲
BashとPowerShellは,似た目的のコマンドでも名前,引数,受け渡すデータの形が異なります.このページには「スクリプト翻訳」「コマンド対応表」「文法対比ガイド」の三つのタブがあります.コマンドを一部置き換える,操作名から例を探す,構文を左右で読み比べるという別々の用途です.まず何を確認したいかでタブを選ぶと,対応表にある例を自動翻訳の対応範囲と取り違えずに済みます.
スクリプト翻訳タブでは,入力欄にBashまたはPowerShellのテキストを貼り付けると,もう一方の書式に置き換えた候補が出力欄に表示されます.変換の仕組みは,決められた正規表現を順番に適用する文字列置換です.構文木を作ってスクリプト全体の意味を理解する仕組みではなく,コマンドの実行もしません.
サンプルボタンで用意された入力を試し,クリアボタンで消し,必要な結果をコピーできます.出力は「そのまま実行できる完成品」ではなく,書き換えを始めるための下書きです.
この違いは,長いスクリプトほど重要です.一行だけならコマンド名が合っているように見えても,前後の変数展開,パイプ,リダイレクト,引用符により実際の動作は変わります.まず短い一行で変換候補を確認し,その後に文脈を含めて見直してください.入力欄のコードはページ内で文字列として扱われ,ファイルを読み込んだり端末を起動したりする機能はありません.
BashからPowerShellへの置換例
翻訳方向が「Bash ➔ PowerShell」のときは,export,mkdir,rm,cp,mv,cat,grep,pwd,find,curl,echo,touchなどの一定の書式にルールを当てます.例えば「mkdir -p logs」は「New-Item -ItemType Directory -Path logs -Force」へ,「export NAME="value"」は「$env:NAME = "value"」へ置換されます.
先に画面のサンプルで出力形式を眺め,次に自分の短いコマンドを入れると,どの語が変わり,どの引数が残るかを確かめやすくなります.
この処理は引数の意味をすべて移すものではありません.「echo "Init log file" >> path」の例では,echoの部分だけがWrite-Outputに変わり,「>> path」はそのまま残ります.追記時の文字コード,改行,宛先ファイルの状態まで検証する機能はないので,実行先のPowerShellで意図する内容になるか別途確認が必要です.
curlの一般形と「curl -s」で別の置換規則を使いますが,HTTPヘッダーや認証情報,返る値の型まで自動で合わせるわけではありません.
削除操作では「rm -rf [path]」が「Remove-Item -Recurse -Force -Path [path]」に置換されます.ここでの角括弧付きのpathは説明用の記号であり,実際にそのまま実行する値ではありません.入力したパスがどの環境を指すか,再帰や強制オプションが必要かは利用者が判断してください.
変換結果に削除コマンドが見えたら,コピー前に対象を確認する習慣を付けることが大切です.
PowerShellからBashへの逆方向と未変換部分
画面中央の翻訳方向を切り替えると「PowerShell ➔ Bash」の規則に変わり,入力欄と出力欄は空になります.前の結果を残したい場合は,切り替える前に別の場所へ控えてください.逆方向でも,決められたコマンドの形だけを置き換えます.例えば「New-Item -ItemType Directory -Path logs -Force」は「mkdir -p logs」に,「Get-Content -Path notes.txt」は「cat notes.txt」に対応する候補を表示します.
これはBashの環境で本当に同じファイルを参照できる,という保証ではありません.
入力の一部に一致する規則がなければ,その部分は元の文字列のまま出力に残ります.変換が成功したという印ではなく,「この部分の置換規則が見つからなかった」という可能性を考えてください.特にif,for,関数定義のようなまとまった構文や,awk,sedを使うテキスト処理を,自動で等価な構文へ書き直す機能はありません.
表面上は一部のコマンドが変わっても,その前後にPowerShell専用の構文が残ることがあります.
正規表現は,文字列がコメントや引用符の内側にあるかを完全には理解しません.説明文の中に置換対象のコマンドらしい語があり,規則の形に合えば,意図しない箇所が変わることもあります.逆にパスに空白がある,引数の並びが異なる,別名を使っているなどの場合は置換されないことがあります.結果を行ごとに入力と比べ,残った原文と想定外の置換を探してください.
18件のコマンド対応表を使うとき
「コマンド対応表」は,ファイル操作,ネットワーク,システム,プロセスに関する18件の静的な例を探せる早見表です.検索欄に操作名や「grep」「Get-Content」のようなコマンド名を入れると,該当候補が絞り込まれます.選んだ行では,Bash側とPowerShell側の例を左右で読め,個別にコピーできます.何をしたいかは分かるが相手側の名前を思い出せない,といった場面に向いています.
ただし対応表と翻訳タブは同じ辞書ではありません.表には「ls -la」と「Get-ChildItem -Force」,疎通確認のpingとTest-Connection,PID指定のkillとStop-Processなどがありますが,ls,ping,killは翻訳タブの置換規則には含まれません.
表で見つけたからといって,翻訳欄へ入力すると自動で置き換わるとは考えないでください.表は一つの操作を比較する資料であり,実際にどのオプションや対象が必要かは作業ごとに確認します.
例えば「grep」と「Select-String」は文字列を探す目的で並んでいますが,返す値や後続処理の方法まで同じではありません.「curl -I」のヘッダー取得例も表にはありますが,翻訳タブの一般的なcurl置換が,その例と同じヘッダー取得動作を再現するとは限りません.コマンドの名前だけでなく,返り値とパイプの次段で何を使うかを確認してから利用してください.
文法対比ガイドで手動移植を考える
「文法対比ガイド」は,変数の定義と参照,if条件分岐,forループ,関数定義,比較演算子を計6組で見せる静的な資料です.Bashでは「VAR="value"」のように代入し,参照時に「$VAR」を使います.PowerShellでは「$Var = "value"」のように変数名にドル記号を付けます.ガイドの二つを左右で見比べると,単にコマンド名を変えるだけでは足りない箇所を発見しやすくなります.
制御の例では,Bashのifとfi,forとdoneに対し,PowerShellは括弧や波括弧,比較演算子を用います.関数の引数の受け取り方も異なります.このページはガイドの例を入力したスクリプトへ自動で当てはめません.実際の条件式が数値比較なのか文字列比較なのか,変数の値が空のときどう扱うかなどは手で検討してください.文法例をそのまま貼るだけで,元の条件分岐が再現されるわけではありません.
Bashの一般的なコマンド間のパイプは主にテキストを渡しますが,PowerShellのコマンドレット間ではプロパティを持つオブジェクトが渡されます.翻訳タブがパイプ内のgrepなどを部分的に置換する場合はあっても,パイプ全体のデータ型や処理の意味は移植しません.
PowerShellに合わせるにはプロパティを調べて処理を組み直す必要がある場合があります.ガイドはその違いを考える入口として使い,出力の同等性は実行環境で別に確かめてください.
生成結果を使う前の確認と情報の扱い
コピーした結果を実際の端末で使う前に,第一に操作対象のパス,第二にオプション,第三に引用符と変数展開,第四にカレントディレクトリと実行権限を確認します.特にrm/Remove-Itemなどの削除,mv/Move-Itemなどの移動,curl/Invoke-WebRequestなどの通信は,文字列の小さな違いが別の対象への操作につながります.
表示された候補を本番の処理へ直接組み込む前に,影響の小さいテスト環境で期待する動作を確認してください.ページ自身はコードを実行しません.
サンプル内の「secret-xyz」は説明用の文字列です.実際のトークンやパスワードをそのまま入力する必要はありません.変換計算はブラウザのJavaScriptで行い,ファイルアップロード機能はありませんが,それだけでサイト全体の通信ゼロ,オフラインでの完全動作,入力やクリップボードの即時消去を保証することはできません.
機密値を含むスクリプトを確認したいときは,その値を仮の文字列へ置き換えてから使ってください.
変換結果に既知のコマンドが残っている場合は対応表で名称を調べ,ifや関数が残っている場合は文法対比ガイドを参照します.その上で公式のシェル資料と実行環境の仕様を確認し,必要な部分だけ手動で書き直すのが適切な使い方です.この三タブを「完成コードの自動生成」ではなく,候補作成・参照・学習の補助として組み合わせることで,誤った移植を見逃しにくくできます.