2012-10-22 4 views
6

PowerShell에서 명령 줄 인터페이스를 사용하는 방법을 배우는 방법에 대한 학습 방법 강좌의 자습서를 따라 왔습니다. this 기사에서, 그것은 mkdir -p i\like\icecream 명령을 사용하라고 알려줍니다. 하단에 "mkdir -p은 모든 디렉토리가 존재하지 않는 경우에도 전체 경로를 만듭니다."라고 설명합니다.mkdir과 ​​mkdir -p의 차이점은 무엇입니까?

나는 -p 인수가없는 mkdir i\like\icecream 인수가 여전히 똑같은 것으로 혼란 스럽습니다. 나는 "one"디렉토리를 만든 다음 mkdir을 사용하여 "one \ two \ three"를 만들고이를 자동으로 두 개의 디렉토리를 만들어 세 개의 디렉토리를 만듭니다. PowerShell이 ​​자동으로 -p 또는 그 외의 것으로 가정합니까? 이런 경우? 나는이 논증이하는 것을 잃어 버렸다.

답변

12

PowerShell은 완전히 제공하지 않은 매개 변수를 결정할 때 최선을 다합니다. 따라서 -p 매개 변수를 사용하는 경우 실제로 -path을 사용하고 있습니다.

mkdir 함수의 경우 -path 매개 변수는 함수에 생성 할 경로를 알려줍니다. -path은 명시 적 매개 변수가 제공되지 않으면 기본적으로 함수의 첫 번째 인수입니다. 따라서 -p (-path)을 사용하고 -p을 사용하지 않고 함수를 호출하는 것은 함수와 관련하여 정확히 똑같습니다. 자세한 내용은

, 쉘 유형 :

Get-Help mkdir 

나는 또한 명확히 할 것이다 당신이 MKDIR 호출 할 때, 당신이 정말 New-Item cmdlet을 호출하고 디렉토리로 -ItemType 매개 변수를 지정하는 것입니다하고 있습니다 . 따라서이 명령을 실행할 때 New-Item 도움말이 표시됩니다. mkdir 함수의 실제 코드가 어떻게 나타나는지 알고 싶다면 다음과 같이하십시오 :

(get-command mkdir).ScriptBlock 
+0

아, 맞습니다. 이 튜토리얼은 이전에'mkdir'을 사용하고 있었기 때문에 다른 것을하지 않는'-p'를 버렸습니다. 빠른 답변 주셔서 감사합니다! –

+2

'-p'는'mkdir'의 * nix 변종과 혼동을 일으킨다 고 생각합니다. 실제로는'-p'와 다르게 작동합니다.이 튜토리얼에서 제시하는 것처럼 누락 된 상위 폴더도 생성합니다. – Femaref

+0

powershell 팀은 별칭과 기능에 * nix 관리자가 더 편하게 해줄 수있는 이름을 제공하기 위해 노력했습니다. 가끔은 혼란을 더할 수 있다고 생각합니다. – EBGreen