PowerShell 1

*nix OS 経験者で Powershell の使い始めに学びそうなことメモ

PowerShell 起動方法

CLI

Start->Powershell or Win-r -> powershell

GUI

Start -> ISE

基本的に PowerShell(以下 PS)はオブジェクトシェル設計。

# いつかどこかのSolaris の会社で作っててパフォーマンス糞でポシャってた系 (遠い目)

なんでもかんでも .Net のオブジェクト使えるし、書き方もそれっぽいのだが、まじ打ちしようとするとひたすら怠い。あり得んくらいダリィ、例えば

$ ls

PS> Get-ChildItem

$ cat $FILE | sort | uniq

PS> Get-Content $FILE | Sort-Object | Select-Object -unique

とかなんだぜ。だから alias 使えるんだが。

# 実際は Sort-Object は sort key 指定できるし、Select-Object -unique は事前 sort はいらないとかいうのはあるけれど、それはとりあえず置いておく

*nix 使い向け、知っておくといい Alias

とりあえず alias って打てばおk

cat = type = Get-Content

ls = dir = Get-ChildItem

pwd = Get-Location

gm = Get-Member

gmo = Get-Module

gp = Get-ItemProperty

history = h = Get-History

man = help

sal = Set-Alias

sort = Sort-Object

select = Select-Object

そして当然 man = help は多用すべし

man COMMNAD or ALIAS -examples

man COMMAND or ALIAS -dtailed

man COMMAND or ALIAS -full

のように使うとなお良い。

使い始めは特に凄く Alias 使いたくなるだろうから、Alias の追加と削除の方法はここで覚えておいて損はない。

PS> Set-Alias ls Get-ChildItem # Get-ChildItem の alias として ls

PS> sal pwd Get-Location # Get-Location の alias として pwd

PS> Remove-Item alias:ls # ls の alias を削除

PS> ri alias:pwd # pwd の alias を削除

また、それ以外にも Alias のコマンドは分かっているんだけれど、オリジナルのコマンドはなんだっけ?とか、逆にオリジナルコマンドにつけられている Alias(別名) のリストが欲しい、とか Alias に関する色々な操作をしたくなるはず。

PS> alias # alias とだけ入力すると全ての alias された(別名が作成されたコマンドのリストが出力される)

PS> alias ls # ls として Alias されている元のコマンド(Definition)を表示

PS> alias g* # gで始まる Alias されているコマンドを表示

PS> alias -definition get-location # Get-Location の Alias を表示

PS> alias -definition set* # set で始まるコマンドの alias を表示

よく使いそうな 1 liners (b?sh -> Powershell)

last

$ cat $FILE | last -1

PS > cat $FILE | select -last 1

PS> cat $FILE | select -index ((cat $FILE).Length -1) # これは酷い

PS > (cat $FILE)[-1]

head

$ cat $FILE | head -1

PS > cat $FILE | select -first 1

PS> cat $FILE | select -index 0

PS > (cat $FILE)[0]

次回

環境設定

grep など

Links

http://blogs.wankuma.com/mutaguchi/archive/2010/02/13/186034.aspx
http://blog.goo.ne.jp/lunatic-sol/c/1c7910443a5ca27fffc5af60dafff38a

Leave a comment