UNIXのエンジニア、PowerShellに触る

UNIXエンジニアが、PowerShellを触るにあたって、UNIXで使うようなイデオムをいくつかピックアップしてみる。なお、リリース版のPowerShell 1.0を念頭に置いてます。

コマンドエディット系の対応操作

現状のPowerShellには、「コントロールキー+何か」でのエディットやカーソル移動はできない。代わりにカーソルキーなどを使う。
C-n C-p : カーソルキーの上下で
C-a C-e : HomeキーとEndキーで

うっかりC-aとか入力すると ^A と表示されて悲しい思いをする。これはあれだ、脳みそにインプリント*1するしかないようです。

パイプラインを流れるオブジェクトのプロパティの一覧を得る

format-listを使うよろし。たとえば


PS> ls | Format-List
ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\.....\test
Name : testx
CreationTime : 2008/06/18 4:32:57
LastWriteTime : 2008/06/18 4:32:58
LastAccessTime : 2008/06/21 14:38:41

Name : tests
CreationTime : 2008/06/18 4:32:53
LastWriteTime : 2008/06/18 4:32:53
LastAccessTime : 2008/06/21 14:38:41

nslookupコマンドの結果をフィルタする


PS> nslookup www.google.com | where {$_ -like 'Addresses*' }
Non-authoritative answer:
Addresses: 66.249.89.147, 66.249.89.99, 66.249.89.104

カレントディレクトリにあるファイルで、指定した拡張子(*.tar)以外からgrepする


PS> ls | where { $_ -notlike '*.tar'} | select-string head

index.html:2:
index.html:6:
indexx.html:2:
indexx.html:5:

サブディレクトリ含めたC#のソースファイルから grepして、sort + uniqする


PS> ls -r | where { $_ -like '*.cs' } | select-string -caseSensitive ugougo | Select-Object Path | sort | Get-Unique -asString

Path

      • -

C:\〜\abc.cs
C:\〜\App_Code\xyz.cs
C:\〜\App_Code\ssh.cs

*1:指で覚えるのと同義