2012-10-22 13 views
6

私はPowerShellでコマンドラインインターフェイスを利用する方法を学ぶためのHard Wayのチュートリアルの学習コードに従ってきました。 の記事では、コマンドmkdir -p i\like\icecreamを使用するように指示しています。下部には、「mkdir -pは、すべてのディレクトリが存在しなくても全体のパスを作成します」と説明しています。mkdirとmkdir -pの違いは?

私は混乱しています。mkdir i\like\icecream-pの引数がなくても、同じことが起こります。私は実験して "one"ディレクトリを作成した後、mkdirで "one \ two \ three"を作成し、3つのディレクトリを自動的に作成します。PowerShellは自動的に-pなどを入力しますこのようなケース?私はこの議論が何をしているかについて迷っている。

答えて

12

PowerShellは、完全に指定していない場合でも、どのパラメータが意味するのかを判断するために最善を尽くします。したがって、-pパラメータを使用する場合は、実際には-pathを使用しています。

mkdir関数の場合、-pathパラメータは関数に作成するパスを指示します。 -pathは、明示的なパラメータが指定されていない場合、関数の最初の引数です。関数-p-path)を呼び出し、-pを指定しないで関数を呼び出すのは、関数に関する限り同じです。

Get-Help mkdir 

私はまた、あなたがMKDIRを呼び出すときに、あなたが本当にやっていることは新しい-Itemコマンドレットを呼び出すとディレクトリとして-ItemTypeパラメータを指定していることを明らかにします:シェル型で詳しく

、 。そのため、このコマンドを実行すると、New-Itemヘルプが表示されます。 mkdir関数の実際のコードがどのようになっているかを見たい場合は、次のようにしてください:

(get-command mkdir).ScriptBlock 
+0

ああ、意味があります。このチュートリアルでは以前は 'mkdir'を使っていただけでしたが、' -p'というものは出ていませんでした。迅速な答えをありがとう! –

+2

私は '-p'は' mkdir'の* nix変種と混同していると思います。実際には '-p'とは異なる働きをします。これはチュートリアルの示唆するように、欠落している親フォルダも作成します。 – Femaref

+0

powershellチームは、* nixの管理者をより快適にする名前でエイリアスと機能を提供するために協力しました。時々、混乱を招くこともあると思います。 – EBGreen