2012-10-22 54 views
6

Tôi đã làm theo hướng dẫn Tìm hiểu về hướng dẫn của Hard Way về cách học cách sử dụng giao diện dòng lệnh trong PowerShell. Trong bài viết this, nó cho tôi biết sử dụng lệnh mkdir -p i\like\icecream. Ở phía dưới, giải thích "mkdir -p sẽ tạo toàn bộ đường dẫn ngay cả khi tất cả các thư mục không tồn tại".Sự khác biệt giữa mkdir và mkdir -p?

Tôi bị nhầm lẫn, như mkdir i\like\icecream mà không có đối số -p vẫn thực hiện tương tự. Tôi đã thử nghiệm và thực hiện các công cụ như tạo thư mục "một", sau đó tạo "one \ two \ ba" với mkdir và nó sẽ tự động tạo hai thư mục cho ba thư mục được đặt. PowerShell có tự động giả định -p hoặc thứ gì đó trong những trường hợp như thế này? Tôi đang thua lỗ về những gì mà lập luận này làm.

Trả lời

12

PowerShell làm hết sức mình để xác định tham số nào bạn muốn nói ngay cả khi bạn không cung cấp đầy đủ. Vì vậy, nếu bạn sử dụng tham số -p, bạn đang thực sự sử dụng -path.

Đối với hàm mkdir, tham số -path cho biết hàm tạo đường dẫn. -path cũng theo mặc định đối số đầu tiên của hàm nếu không có tham số rõ ràng nào được cung cấp. Vì vậy, gọi hàm với -p (-path) và không có -p chính xác giống như chức năng liên quan.

Để biết thêm thông tin, trong các loại vỏ:

Get-Help mkdir 

Tôi cũng sẽ làm rõ rằng khi bạn gọi mkdir, những gì bạn đang thực sự làm được gọi New-mục cmdlet và xác định các tham số -ItemType như thư mục . Đó là lý do tại sao bạn thấy trợ giúp New-Item khi bạn chạy lệnh đó. Nếu bạn muốn xem mã thực tế cho hàm mkdir để xem nó hoạt động như thế nào, hãy làm điều này:

(get-command mkdir).ScriptBlock 
+0

Ah, điều đó có ý nghĩa. Bài hướng dẫn trước đây chỉ có tôi bằng cách sử dụng 'mkdir', sau đó nó ném ra thứ' -p' mà dường như không làm gì khác. Cảm ơn vì sớm phản hồi! –

+2

Tôi nghĩ rằng '-p' xuất phát từ sự nhầm lẫn với biến thể * nix của' mkdir', mà thực sự hoạt động khác trên '-p', điều này sẽ làm như hướng dẫn gợi ý, tạo ra bất kỳ thư mục cha bị thiếu nào. – Femaref

+0

Nhóm powershell đã thực hiện một nỗ lực phối hợp để cung cấp bí danh và chức năng với tên sẽ làm cho quản trị viên * nix thoải mái hơn. Đôi khi tôi cho rằng nó có thể thêm một số nhầm lẫn là tốt. – EBGreen