まえがき
- ちょっとしたファイル操作なら断然CUIだよね!
- ずっとcmdを使ってきたけど、PowerShellが出て久しいし、そろそろPowerShellに移行したいなあ
- Linuxコマンドとcmdコマンドをよく間違える
という人向けに、よく使うPowerShellのTipsをまとめました。
筆者的PowerShellの強い所
- aliasが充実 → cmdっぽいコマンド名もLinuxっぽいコマンド名も使える
- 結果をオブジェクトで持っている→パイプで渡してコピーとか移動とか開いたりできる
- 環境変数がドライブになっている
筆者的PowerShellの弱い所
- 起動が重い
- 結果が長い文字列だと見切れる
- 文字コードに一部対応してない(EUCとか)
Tips
PowerShellのコマンドの主なalias
正式名称 | cmdライク | Linuxライク |
---|---|---|
Set-Location | cd | cd |
Get-ChildItem | dir | ls |
Clear-Host | cls | clear |
Move-Item | move | mv |
Copy-Item | copy | cp |
Get-Content | type | cat |
Remove-Item | del / rmdir | rm |
Get-Help | help | man |
ちなみに、PowerShellのaliasには二種類ある(っぽい)
- Get-Aliasコマンドで一覧化されているものはそれを使える。(例:Move-Item → mv)
- Get-で始まるコマンドは、Get-を省略できる。(例:Get-Help → help)
結果がオブジェクトであることの活用
サブフォルダにあるhogehogeって名前を含むファイルを全部C:\dest にコピー
> ls -R *hogehoge* | copy -D C:\dest
サブフォルダにあるhogehogeって名前を含む拡張子がxlsxのファイルを全部開く
> ls -R *hogehoge*xlsx | ii
環境変数まわり
env:というドライブに各環境変数がフォルダで管理されている形になっている。
(完全にフォルダと同一ではなさそうなことに注意)
環境変数を参照する
$env:(環境変数名)
で参照できる。
ちなみに%~%では参照できません!
Pathを参照する場合
> echo $env:Path
環境変数一覧を取得
> ls $env:
環境変数のタブ補完
> env:userp[TAB]
↓
> Env:\USERPROFILE
結果のsplit表示
> $env:Path.split(';');
C:\Program Files (x86)\Intel\iCLS Client
C:\Program Files\Intel\iCLS Client
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0
C:\Users\Tosh\AppData\Local\Microsoft\WindowsApps
ホームディレクトリ(%USERPROFILE%)へ移動
> cd ~
もちろん環境変数の参照でも可能
> cd $env:USERPROFILE
mavenのrepositoryディレクトリに移動したいなら
>cd ~\.m2\repository
その他
デフォルトのエクスプローラを開く
> ii
hogehogeというコマンドのオンラインヘルプを開く
>man hogehoge -o
PowerShellではうまくいかないこと
EUCファイル
EUCファイルのファイルを見るのはPowerShellでは無理っぽいです。
使うならcmdを使いましょう。
下記はcmdにて実行。
>chcp 20932
>type hogehoge.txt
終わりに
他に思いついたら足していきます