Ban đầu , chỉ có mkdir
lệnh trần . Theo nguyên tắc thiết kế của Unix, lệnh đơn giản này đã thực hiện một nhiệm vụ đơn giản: tạo thư mục.
Sau đó, mkdir
có được một -p
tùy chọn để xử lý một trường hợp sử dụng phổ biến trong đó người gọi muốn tạo 0, một hoặc nhiều thư mục để đảm bảo rằng một đường dẫn cụ thể tồn tại. Điều này đã không được thực hiện các hoạt động mặc định vì một số lý do. Đầu tiên, không phải tất cả các hệ thống đều có tính năng phức tạp hơn này và yêu cầu -p
tùy chọn có nghĩa là các tập lệnh đã sử dụng nó sẽ nhận được thông báo lỗi hợp lý (đại loại như vậy mkdir: invalid option -z
) thay vì thỉnh thoảng không tạo được thư mục. Thứ hai, và quan trọng nhất, hành vi của mkdir -p
không phải là sự thay thế tương thích mkdir
trong mọi trường hợp.
Đặc biệt, trên hầu hết các hệ thống tập tin, mkdir
là một hoạt động nguyên tử . Nếu một chương trình chạy mkdir playground
và lệnh thành công, chương trình biết rằng nó đã tạo playground
thư mục. Điều này cho phép chương trình coi thư mục mới là sân chơi độc quyền của nó: nếu một phiên bản khác của cùng một chương trình đang chạy đồng thời, lệnh gọi của nó mkdir playground
sẽ thất bại. Thuộc tính này rõ ràng không được cung cấp bởi mkdir -p
vì nó cho phép đối số tồn tại.
Nếu mkdir -p
đã tồn tại từ đầu, nó có thể đã được tạo ở chế độ mặc định, giống như mkdir -a
với lệnh tạo thư mục đơn. Nhưng điều đó sẽ không tuân theo triết lý thiết kế Unix thông thường: hầu hết các tiện ích cơ bản là các trình bao bọc đơn giản xung quanh các nguyên thủy cơ bản, với hành vi fancier (như tạo nhiều thư mục trong một lần) yêu cầu các tùy chọn ưa thích.
alias mkdir="mkdir -p"
.