it-swarm-vi.tech

Tên tệp Linux / Windows / Unix / ...: Ký tự nào được phép? Đó là không được giải thoát?

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?

43
java.is.for.desktop

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 với $ 1.000 Alex

Tôi không biết những ký tự nào phải un - đã thoát, 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 chẳng hạn như "n" (dòng mới), "t" (tab) và các thứ khác, nhưng nói chung đó không phải là vấn đề trong hoạt động của tệp. 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/. Trong Windows, chỉ NUL, :\ 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 ?, *, +%.

Tại bất kỳ thời điểm nào, không có ký tự nào trong tên tệp cần được thoát trừ khi được yêu cầu để Shell không bị giải thích.

26

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

14
Greg Askew

Trên Linux và các hệ thống tương thích POSIX khác, "/" được dành riêng như 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.

5
janneb