Linux ⇄ PowerShell コマンド対訳表
「Linuxのあのコマンド、PowerShellでは何?」(その逆も)が一発で分かる対訳表です。やりたいこと・コマンド名のどちらでも検索できます。コマンドはクリックでコピーされます。
いちばん大きな違い:パイプで渡すのは「文字」か「オブジェクト」か
Linuxのパイプ(|)は、前のコマンドが出した文字の行を次のコマンドに渡します。必要な部分は、何列目かを数えて awk や cut で切り出します。PowerShellのパイプは、名前や数値などの項目(プロパティ)を持ったオブジェクトを渡すので、列の位置ではなく項目名で取り出せます。
| やりたいこと | Linux | PowerShell |
|---|---|---|
| CPUを多く使っているプロセス上位5件 | ps aux --sort=-%cpu | head -n 6 | Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU |
Linux側の head -n 6 は、1行目が見出しなので6行にしています。また、2つの「CPU」は意味が違う点に注意してください。ps の %CPU は使用率(%)ですが、Get-Process の CPU は起動してからの累積CPU時間(秒)です。どんな項目を持っているかは Get-Process | Get-Member で一覧できます。
実務でよく使う置き換え(実行例つき)
ログからエラーの行を探す
# Linux
grep -n ERROR *.log
# PowerShell
Select-String -Path *.log -Pattern 'ERROR'
PowerShellの結果は app.log:2:2026-10-15 10:01 ERROR db timeout のように「ファイル名:行番号:行の中身」で表示され、grep -n で複数ファイルを検索したときと同じ形です。ただし、Select-String は大文字・小文字を区別しないのが既定で、grep とは逆です。区別したいときは -CaseSensitive を付けます。見つかった件数は (Select-String -Path *.log -Pattern 'ERROR').Count で数えられます。
ファイルの行数を数える
# Linux
wc -l app.log
# PowerShell
(Get-Content .\app.log).Count
ログに追記される内容を見続ける
# Linux
tail -n 20 -f app.log
# PowerShell
Get-Content .\app.log -Tail 20 -Wait
どちらも、止めるときは Ctrl+C です。
使うときの注意点
PowerShellのLinux風エイリアスに注意。 PowerShellでは ls、cat、cd、rm などがそのまま動きますが、これは中身が Get-ChildItem などの別コマンドに割り当てられた「別名」です。コマンド名は同じでもオプションは互換性がありません(例: ls -la はPowerShellではエラー)。本表ではエイリアスではなく正式なコマンドレット名を載せています。
curl / wget の罠。 Windows PowerShell 5.1 で curl と打つと、本物のcurlではなく Invoke-WebRequest のエイリアスが動きます。オプションが全く違うためLinuxの感覚で使うとエラーになります。Windows 10以降には本物の curl.exe も同梱されており、curl.exe と拡張子まで打てばそちらが使えます。
文字コードの違い。 Windows PowerShell 5.1 がファイル出力する際の既定はUTF-16です。Linuxサーバーや他のツールに渡すファイルを作るときは -Encoding UTF8 を付けるのが安全です(PowerShell 7以降はUTF-8が既定)。
よくある質問
Q. PowerShellとコマンドプロンプト(cmd)は違うもの?
A. 別物です。cmdは従来のコマンド(dir、ipconfig など)を実行する古いシェル、PowerShellはオブジェクト指向の新しいシェルです。本表はPowerShellを対象としていますが、cmdの伝統的なコマンドの多くはPowerShell上でもそのまま動きます。
Q. Windows PowerShell 5.1 と PowerShell 7 の違いは?
A. 5.1はWindows標準搭載の最終版、7はクロスプラットフォームの後継版(別途インストール)です。本表のコマンドは基本的にどちらでも動きますが、文字コードの既定値など細かい挙動が異なります。注記が必要なものには本表内に記載しています。
Q. PowerShellで grep と打つとどうなる?
A. エラーになります。PowerShellには ls や cat のような別名(エイリアス)が用意されていますが、grep はありません。文字列を探すときは Select-String を使います(短い別名は sls)。
Q. 内容に間違いを見つけたら?
A. 検証のうえ修正します。お問い合わせからご連絡ください。