Tóm lược:
- Windows: mọi thứ trừ các ký tự điều khiển của ASCII và
\/:*?"<>|
- Linux, OS-X: mọi thứ trừ null hoặc
/
Trên tất cả các nền tảng, tốt nhất là tránh các ký tự không in được, chẳng hạn như các ký tự điều khiển ASCII.
các cửa sổ
Trong Windows, Windows Explorer không cho phép các ký tự điều khiển hoặc \/:*?"<>|
Bạn có thể sử dụng khoảng trắng. Nếu bạn sử dụng khoảng trắng, bạn sẽ thường phải trích dẫn tên tệp khi được sử dụng từ dòng lệnh (nhưng các ứng dụng GUI không bị ảnh hưởng cho đến nay tôi biết). Hệ thống tập tin Windows như NTFS rõ ràng lưu trữ mã hóa với tên tệp, nhưng UTF-16 là tiêu chuẩn.
Một số phần của Windows phân biệt chữ hoa chữ thường, các phần khác không phân biệt chữ hoa chữ thường. Thật dễ dàng để tạo các tên tệp riêng biệt như "Ab" và "ab" trên hệ thống tệp NTFS của Windows. Các tên này đề cập đến các tệp riêng biệt có chứa nội dung riêng biệt. Tuy nhiên, mặc dù dấu nhắc lệnh của Windows sẽ liệt kê vui vẻ cả hai tệp bằng cách sử dụng dir
, nhưng bạn không thể dễ dàng truy cập hoặc thao tác với một trong số chúng bằng các lệnh như type
. Xem bên dưới.
Linux, OS-X
Trong Linux và OS-X, chỉ có /
bộ ASCII có thể in được bị cấm. Một số ký tự (shell metachar character like *?!
) sẽ gây ra sự cố trong các dòng lệnh và sẽ yêu cầu tên tệp phải được trích dẫn hoặc thoát một cách thích hợp.
Các hệ thống tập tin Linux như ext2, ext3 là bất khả tri tập hợp ký tự (tôi nghĩ rằng chúng chỉ coi nó ít nhiều như một luồng byte - chỉ null và /
bị cấm). Điều này có nghĩa là bạn có thể lưu trữ tên tệp trong mã hóa UTF-8. Tôi tin rằng tùy thuộc vào trình bao hoặc ứng dụng khác để biết nên sử dụng mã hóa nào để chuyển đổi đúng tên tệp để hiển thị hoặc xử lý.
Phần kết luận
Vì vậy, bạn có thể có thể sử dụng một cách an toàn một cái gì đó như ✣
(nếu nó không quá khó để nhập)
Độ nhạy case- (in) trong Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Lưu ý rằng chúng ta không thể nhập nội dung của tệp thứ hai, type
lệnh Windows chỉ trả về nội dung của Ab thay thế. Tệp thứ ba cũng khác với aB trên Linux.
(Windows 10 NTFS).