Rất nhiều lý do là lịch sử. Điều đó không có nghĩa là họ không có ý nghĩa ngày hôm nay.
Các vấn đề về tính di động
Khi đặt tên một tệp, bạn cũng có thể phải xem xét các hệ thống (tệp) khác sẽ xử lý tên tệp đó như thế nào. Một ký tự trong tên tệp có thể tốt cho hệ thống của bạn, nhưng nó có thể là vấn đề đối với hệ thống khác.
Vì vậy, miễn là có khả năng nhỏ nhất là bạn có thể muốn truy cập tệp dễ dàng từ một hệ thống cũ hơn, bạn chỉ chọn ký tự an toàn . Điều này có thể bao gồm việc khởi động vào một hệ thống khôi phục cũ mà bạn giữ xung quanh hoặc lo ngại rằng các phiên bản Windows gần đây vẫn bằng cách nào đó dựa trên MS-DOS.
Chiều dài
Một hệ thống tệp có thể giới hạn độ dài mà tệp có thể có. Điều này thậm chí còn nghiêm trọng hơn trong những ngày mà MS-DOS bị giới hạn ở tên tệp 8.3 . Vì vậy, bỏ không gian cho phép bạn đặt các ký tự có ý nghĩa hơn vào tên.
Một số hệ thống tệp khác cũng xác định giới hạn nghiêm ngặt về độ dài tên tệp của chúng. Wikipedia có một bảng trong bài viết về so sánh hệ thống tệp cho những người muốn biết chi tiết.
Nhân vật dành riêng
MS-DOS cũng định nghĩa ký tự không gian là ký tự dành riêng. Điều này là do thực tế là ký tự không gian đã được sử dụng để đệm trong FAT . Ngoài ra, MS-DOS không cung cấp hệ thống thoát hiểm trong hệ vỏ.
Giải thích dòng lệnh
Hầu hết các dòng lệnh tôi biết sử dụng ký tự khoảng trắng làm dấu phân cách tham số . Khi bỏ qua việc thoát đúng tên tệp, nó có thể gây ra hậu quả nghiêm trọng vì các phần của tên tệp có thể được hiểu là tham số cho ứng dụng bạn muốn gọi.
Xem xét sự khác biệt giữa
rm foo bar
và
rm "foo bar"
Bài viết WikiPedia được liên kết ở trên thậm chí chỉ ra sự mơ hồ được giới thiệu bằng cách mất tích để thoát đúng lệnh:
Sự mơ hồ có thể được ngăn chặn bằng cách cấm các không gian được nhúng trong tên tệp và thư mục ở vị trí đầu tiên (ví dụ: bằng cách thay thế chúng bằng dấu gạch dưới '_') hoặc, nếu được hỗ trợ bởi trình thông dịch dòng lệnh và các chương trình lấy các tham số này như đối số, bằng cách đặt tên có khoảng trắng được nhúng giữa các ký tự trích dẫn hoặc sử dụng ký tự thoát trước khoảng trắng, thường là dấu gạch chéo ngược ('\'). Ví dụ
Long path/Long program name Parameter one Parameter two ...
là mơ hồ (là "tên chương trình" một phần của tên chương trình, hoặc hai tham số?); Tuy nhiên
Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...
và Long \ path / Long \ chương trình \ name Parameter \ one Parameter \ hai ...
không mơ hồ.
Bộ định vị tài nguyên thống nhất (URL)
Khi cố gắng mô tả vị trí của tệp, sử dụng URL, khoảng trống cần phải được thoát.
Nhân vật có thể không an toàn vì một số lý do. Ký tự khoảng trắng không an toàn vì các khoảng trắng đáng kể có thể biến mất và các khoảng trắng không đáng kể có thể được đưa vào khi URL được sao chép hoặc sắp chữ hoặc chịu sự điều trị của các chương trình xử lý văn bản.
Nguồn: RFC1738
Vì vậy, một không gian phải được thay thế bằng một %20
thay thế. Điều này làm cho phần tên tệp của URL ít được đọc hơn và do đó, khiến mọi người tránh nó ngay từ đầu.