2012-10-22 27 views
6

Podążałem za tutorialem "Poznaj kod" w podręczniku "Hard Way", ucząc się, jak korzystać z interfejsu wiersza poleceń w PowerShell. W artykule this mówi mi, aby użyć polecenia mkdir -p i\like\icecream. U dołu wyjaśnia: "mkdir -p utworzy całą ścieżkę, nawet jeśli wszystkie katalogi nie istnieją."Różnica między mkdir i mkdir -p?

Jestem zdezorientowany, ponieważ mkdir i\like\icecream bez argumentu -p nadal robi to samo. Eksperymentowałem i robiłem takie rzeczy, jak tworzenie "jednego" katalogu, a następnie tworzenie "jeden \ dwa \ trzy" z mkdir i automatycznie utworzy on dwa katalogi dla trzech, które mają być umieszczone. Czy PowerShell automatycznie przyjmuje -p lub coś w takie przypadki? Nie rozumiem, co robi ten argument.

Odpowiedz

12

PowerShell dokłada wszelkich starań, aby określić, o jaki parametr chodzi, nawet jeśli nie daje się go w pełni. Dlatego jeśli używasz parametru -p, w rzeczywistości używasz -path.

Dla funkcji mkdir parametr -path informuje funkcję o ścieżce do utworzenia. -path jest także domyślnie pierwszym argumentem funkcji, jeśli nie podano jawnych parametrów. Wywołanie funkcji z -p (-path) i bez -p jest dokładnie tym samym, co funkcja.

Aby uzyskać więcej informacji, w rodzaju powłoki:

Get-Help mkdir 

będę również wyjaśnić, że podczas wywoływania mkdir, czego naprawdę robi jest wywołaniem polecenia New-Item i określanie parametru -ItemType jako katalog . Dlatego po uruchomieniu tego polecenia pojawia się pomoc New-Item. Jeśli chcesz zobaczyć aktualny kod funkcji mkdir, aby zobaczyć, jak to robi, zrób to:

(get-command mkdir).ScriptBlock 
+0

Ach, to ma sens. Samouczek poprzednio miał mnie tylko przy użyciu 'mkdir', a następnie wyrzucił rzecz' -p', która najwyraźniej nie robiła nic innego. Dzięki za szybką odpowiedź! –

+2

Myślę, że '-p' pochodzi od pomieszania z wariantem * nix' mkdir', który faktycznie działa inaczej na '-p', który, jak sam sugeruje, utworzy również brakujące foldery macierzyste. – Femaref

+0

Zespół powershell podjął wspólne wysiłki, aby udostępnić aliasy i funkcje nazwom, które uczyniłyby adminów * nix wygodniejszymi. Czasami przypuszczam, że może to również spowodować pewne zamieszanie. – EBGreen