[windows][powershell][tips]moreって何者?、パラメータの省略形
パイプの後に使うと1ページずつ表示してくれる便利なコマンド、more
君はいったい何者なんだ。
まずはお決まりの、
help more
あれ?「トピック"more"のヘルプが見つかりません。」
負けずに次、
get-alias more
「エイリアスが見つかりません。」
かといってコマンドレットであるはずはないし。(コマンドレットはすべて 動詞-名詞 の書式だから)
もしかして、
get-command -commandtype function
あったー!関数なのね。(CommandTypeの値がFunction)さらにmoreの行だけ取り出すなら
get-command -commandtype function | where-object {$_.name -eq "more"}
※ちなみにエイリアス使いまくると、
gcm -type function | ?{$_.name -eq "more"}
-commandtype が -type と省略できることは、help get-command -detailed
で「CommandType またはそのエイリアスである Type を使用することができます。」と書かれていたところから知る。
ここでマニュアルを見る。ユーザーガイド(PowerShell入門)36ページに、「more は、Out-Host -Paging を呼び出す関数です。」と書いてある。やっぱり関数なんだ。でも、Out-Host -Paging を呼び出す、というのはどこを見れば分かるんだろう。
さっきのコマンドだと途中で切れている「Definition」列を全部表示させることができればいいのかな。文字列をフォーマットすればいいのか。こうか。
get-command -commandtype function| where-object {$_.name -eq "more"} | format-list
若干見づらいが確かにOut-Host -p を使用していることが分かった。
(type function:more でもDefinitionの値が得られることを知る。短くてイイ!構文自体はまだ理解できていないけど。)
しかし次の疑問。Out-Host のパラメータ -pagingではなく -p と記述されているがそれは同じものなの?
そんなのヘルプに書いてたっけ?
help Out-Host -detailed
help Out-Host -full
書いてない。どうすればどのパラメータが何に省略できるのか知ることができるのだろう。
しばらく悩む。基本に立ち返りマニュアル(ファーストステップガイド、PowerShell入門)を読む。
見つけた。ファーストステップガイド18ページ。
たとえば、Get-Help コマンドレットには "Detailed" というパラメータがあります。この場合は、「-det」と入力できます。それは、「-det」と入力すれば Get-Help の Debug パラメータと区別できるからです。
つまりパラメータは一意に判別できる範囲でいくらでも省略可能。
なんてこと。。それってやりたい放題じゃん。なんだよPowerShellの特徴の一つに一貫したパラメータ命名規則があります、とか言っておきながら。ヽ(`Д´)ノ
でも短いパラメータはUnix的で好きかも。ただしやりすぎると他人に迷惑かける恐れがありそうなのでご利用は計画的に。