Có phải mkdir -p hoàn toàn an toàn khi tạo thư mục đã tồn tại


13

Nói rằng tôi có một thư mục:

./folder/

Bên trong nó có nhiều tập tin và thậm chí cả thư mục con.

Khi tôi thực thi:

mkdir -p folder

Tôi sẽ không thấy bất kỳ lỗi nào ngay cả cảnh báo. Vì vậy, chỉ muốn xác nhận, có bất cứ điều gì bị mất hoặc thay đổi trong kết quả của lệnh này?


2
Sự giúp đỡ của mkdir nói rằng các thư mục chỉ được tạo khi chúng không có mặt. Điều này ngụ ý với tôi rằng khi thư mục tồn tại thì không có gì được thực hiện.
Marco

Câu trả lời:


22

mkdir -p sẽ không cung cấp cho bạn một lỗi nếu thư mục đã tồn tại và nội dung cho thư mục sẽ không thay đổi.

Nhập thủ công cho mkdir


1
Câu trả lời này dường như không đúng. mkdir thực sự phát ra lỗi nếu thư mục tồn tại, trừ khi sử dụng cờ -p.
Aaron Cicali

trong lỗi, bạn có thể kiểm tra mã như if(err.code == 'EEXIST')điều kiện này sẽ đúng nếu thư mục đã tồn tại.
dùng403173

12

Một kịch bản di động sẽ dựa vào POSIX, mà nói về mkdir's -plựa chọn:

Mỗi toán hạng dir đặt tên một thư mục hiện có sẽ bị bỏ qua mà không có lỗi.

và nếu không có lỗi nào được báo cáo, -ptùy chọn đã thực hiện công việc của nó:

Tạo bất kỳ thành phần tên đường dẫn trung gian bị thiếu.


4

mkdir SILL cung cấp cho bạn một lỗi nếu thư mục đã tồn tại.

mkdir -p SILL KHÔNG cung cấp cho bạn một lỗi nếu thư mục đã tồn tại. Ngoài ra, thư mục sẽ vẫn còn nguyên, tức là nội dung được bảo tồn như cũ.


0

Bạn nói thế,

Khi tôi thực thi mkdir -p foldertôi sẽ không thấy bất kỳ lỗi nào kể cả cảnh báo.

Bạn sẽ thấy một lỗi nếu lệnh thất bại. Các -plá cờ duy nhất ngăn chặn lỗi nếu thư mục đã tồn tại.

touch x
mkdir -p x
mkdir: cannot create directory ‘x’: File exists

Vấn đề tương tự sẽ xảy ra nếu bạn cố gắng tạo một thư mục như một người dùng bình thường trong, giả sử , /etc.

Những gì -psẽ ngăn chặn là lỗi sẽ được kích hoạt khi thư mục đích đã tồn tại

mkdir y
mkdir -p y

Tuy nhiên, trong mọi trường hợp, bạn sẽ không mất gì cả, và sẽ không có gì thay đổi. Trong các tình huống lỗi, bạn sẽ không có thư mục mà bạn đang mong đợi.


Điều này có vẻ giống như một bình luận hơn là một câu trả lời.
G-Man nói 'Phục hồi Monica'

Tôi đã tự hỏi về điều đó, nhưng tôi đặc biệt đặt lại tuyên bố trong câu hỏi của OP, " Khi tôi thực thi, mkdir -p foldertôi sẽ không thấy bất kỳ lỗi nào kể cả cảnh báo. "
roaima
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.