Đặt cược an toàn nhất là tham khảo mục nhập wikipedia cho bộ ký tự được phép cho bất kỳ hệ điều hành nào. Nó có thể được tìm thấy từ đây .
Ví dụ, đối với hầu hết các hệ thống dựa trên unix, bộ ký tự được phép là bộ 8 bit và ký tự dành riêng là ký tự null (NUL, '\0'
). Tuy nhiên, không nên sử dụng các ký tự đặc biệt trong tên tệp khi chúng gây ra sự cố trong khi xóa chúng.
Ví dụ, tôi có thể có một tên tệp -ramesh.txt
và tôi cố gắng xóa nó như dưới đây.
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
Tôi cần xóa các tập tin như,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Thêm chi tiết có thể được tìm thấy từ câu trả lời này là tốt .
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ý.
Vì vậy, để kết luận, vấn đề không nằm ở việc sử dụng các ký tự đặc biệt cho tên tệp mà là cách xử lý chúng.