Làm cách nào để tạo một thư mục có tên '-p' trong Linux với Bash? [bản sao]


22

Trong Bash, làm thế nào tôi có thể tạo một thư mục có tên -p?

mkdir -pthất bại.
mkdir "-p"thất bại.
mkdir "\-p"thất bại.
mkdir \-pthất bại.


1
Lưu ý rằng tất cả những thứ này đang cố thoát khỏi tham số cho bash. Vì nó thoát giống như không thoát, nên tất cả những thứ này ngoại trừ thứ ba sẽ chỉ gửi chuỗi "-p" tới mkdir, nó sẽ phân tích nó như một tùy chọn. Phân tích cú pháp tùy chọn không được thực hiện trong bash, vì vậy mọi cách xoay quanh vấn đề này (được mô tả trong các câu trả lời bên dưới) là một tính năng của mkdir (hay đúng hơn là thiếu lỗi).
Điểm_Under

11
Hãy hỏi tại sao bạn muốn có một thư mục như vậy. Nó sẽ là một PITA để sử dụng.
Daniel R Hicks

3
@DanielRHicks: Tôi đã tạo nhầm thư mục này, nhưng không biết cách xóa nó.
Jichao

4
Vậy thì, câu hỏi là "Làm thế nào để xóa một thư mục có tên '-p' trong Linux với Bash"?
chepner

@chepner: Vì thực sự chúng là những vấn đề tương tự. Tôi đã cố gắng để xóa thư mục với rmdirnhưng không thành công với lỗi tương tự.
Jichao

Câu trả lời:


40

Hầu hết các tiện ích (tất cả các tiện ích tuân thủ POSIX ngoại trừ testecho) đều hỗ trợ tùy chọn "kết thúc tùy chọn" -- , do đó bạn có thể chạy:

mkdir -- -p

Điều này đặc biệt hữu ích khi đổi tên hoặc xóa các tệp có khả năng bắt đầu bằng dấu gạch ngang. Trong các kịch bản bạn nên luôn luôn sử dụng

mv -- "$filename"

thay vì một tên đơn giản mv "$filename"hoặc, thậm chí tệ hơn, một tên tệp không được trích dẫn.


3
Tuyệt vời. Điều này thực sự tốt để biết
Bruno9779

18

mkdir ./-p

Hãy nhớ rằng hầu hết các chương trình khác sẽ cần sử dụng cùng một "mánh khóe".

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.