Những ký tự nào được phép và những ký tự nào phải được thoát trên dòng lệnh trong các hệ điều hành khác nhau?
Những ký tự nào được phép và những ký tự nào phải được thoát trên dòng lệnh trong các hệ điều hành khác nhau?
Câu trả lời:
Có một cuộc thảo luận về các ký tự tên tệp trong bài viết Wikipedia về Tên tệp .
Bạn có thể tìm thấy thông tin bài tiểu luận này: Sửa tên tệp Unix / Linux / POSIX .
Bài viết này so sánh OS X và Windows XP: X so với XP: Các ký tự bị cấm trong Tên tệp (PDF, xem trang khoảng 64-66).
Những thứ không nên có trong tên tệp cho $ 1.000 Alex
Tôi không biết những ký tự nào phải được bỏ qua, nhưng trong Linux, có lẽ không nên thoát khỏi các ký tự có thể có ý nghĩa đặc biệt như "n" (dòng mới), "t" (tab) và các ký tự khác, nhưng đó thường không phải là một vấn đề trong hoạt động tập tin. Có lẽ bạn có nghĩa là "thoát" chứ không phải "không thoát". Những cái phổ biến nhất là những cái mà shell sẽ diễn giải như không gian, ">", "<", v.v ... Xem một số bài viết tôi liên kết để thảo luận về những điều đó.
Các ký tự duy nhất không được phép trong tên tệp trong * nix là NUL
và /
. Trong Windows, chỉ NUL
, :
và \
đang thực sự không được phép, nhưng nhiều ứng dụng hạn chế hơn nữa, cũng ngăn chặn ?
, *
, +
, và %
.
Không có bất kỳ ký tự nào trong tên tệp cần phải được thoát trừ khi được yêu cầu để không được giải thích bởi trình bao.
Nếu bạn tạo một tệp trên Windows bằng Explorer bằng một trong các ký tự sau, nó sẽ phàn nàn rằng các ký tự không được phép:
\ / : * ? " < > |
Một tài liệu tham khảo tốt ở đây:
Đặt tên tệp, đường dẫn và không gian tên http://msdn.microsoft.com/en-us/l Library / aa365247% 28VS85% 29.aspx
Microsoft tuyên bố thêm:
"... trên nền tảng máy tính để bàn dựa trên Windows, các ký tự đường dẫn không hợp lệ có thể bao gồm các ký tự ASCII / Unicode từ 1 đến 31, cũng như trích dẫn ("), nhỏ hơn (<), lớn hơn (>), pipe (|), backspace (\ b), null (\ 0) và tab (\ t). "
http://msdn.microsoft.com/en-us/l Library / system.io.path.getinvalidpathchars.aspx
\ / : * ? " < > |
tất cả chúng và tạo chúng bằng mkdir trên hệ thống GNU / Linux của tôi. Bạn có thể sử dụng mkdir '?'
để tạo ?
thư mục là tốt. Tôi đã sử dụng hệ thống tệp ramdisk và XFS để kiểm tra điều đó.
Trên Linux và các hệ thống tương thích POSIX khác, "/" được dành riêng vì nó là dấu tách thư mục và "\ 0" (ký tự NULL) chỉ định phần cuối của chuỗi. Mọi thứ khác đều được cho phép.