2012-10-22 18 views
6

Ich habe das Lernprogramm von Learn Code the Hard Way gelesen, in dem Sie lernen, wie Sie die Befehlszeilenschnittstelle in PowerShell verwenden. In this Artikel, sagt es mir, den Befehl mkdir -p i\like\icecream zu verwenden. Unten wird erklärt, dass "mkdir -p einen vollständigen Pfad erstellt, selbst wenn alle Verzeichnisse nicht existieren."Unterschied zwischen mkdir und mkdir -p?

Ich bin verwirrt, als mkdir i\like\icecream ohne die -p Argument noch immer die gleiche Sache. Ich habe experimentiert und Sachen wie das Errichten eines "eins" Verzeichnisses getan, dann "eins \ two \ three" mit mkdir erzeugt und es wird automatisch ein zwei Verzeichnis für drei geschaffen, um hineingelegt zu werden. Beabsichtigt PowerShell automatisch -p oder etwas in Fälle wie diese? Ich weiß nicht, was dieses Argument bewirkt.

Antwort

12

PowerShell tut sein Bestes, um zu bestimmen, welchen Parameter Sie meinen, auch wenn Sie ihn nicht vollständig angeben. Wenn Sie also den Parameter -p verwenden, verwenden Sie tatsächlich -path. Für die Funktion mkdir teilt der Parameter -path der Funktion den zu erstellenden Pfad mit -path ist auch standardmäßig das erste Argument für die Funktion, wenn keine expliziten Parameter angegeben sind. Also ist das Aufrufen der Funktion mit -p (-path) und ohne -p für die Funktion genau dasselbe.

Weitere Informationen in der Shell-Typ:

Get-Help mkdir 

Ich werde auch klarstellen, dass, wenn Sie mkdir nennen, was Sie wirklich tun, ist das New-Item-Cmdlets aufrufen und den -ItemType Parameter als Verzeichnis Angabe . Aus diesem Grund sehen Sie die New-Item-Hilfe, wenn Sie diesen Befehl ausführen. Wenn Sie den tatsächlichen Code für die mkdir Funktion sehen möchten, um zu sehen, wie es das macht, tun Sie dies:

+0

Ah, das macht Sinn. Das Tutorial hatte mich vorher nur 'mkdir' benutzt, dann hat es das' -p'-Ding rausgeworfen, was nichts anderes zu tun schien. Danke für die schnelle Antwort! –

+2

Ich glaube, das '-p' kommt von einer Verwechslung mit der * nix-Variante von' mkdir', die sich in der Tat anders verhält als '-p', was, wie das Tutorial vorschlägt, auch fehlende Eltern-Ordner erzeugt. – Femaref

+0

Das Powershell-Team hat sich bemüht, Aliase und Funktionen mit Namen zu versehen, die * nix admins komfortabler machen. Manchmal nehme ich an, dass das auch Verwirrung stiften kann. – EBGreen