Tôi vừa gặp câu hỏi sau đây trong Môi trường lập trình Unix , cuốn sách kinh điển của Kernighan và Pike về Unix (Tôi tìm thấy văn bản dưới đây trên trang 79 của năm 1984, ISBN: 0-13-937699-2):
Bài tập 3-6. (Câu hỏi lừa) Làm thế nào để bạn có được một / thành một tên tệp (nghĩa là a / không tách các thành phần của đường dẫn?
Tôi đã làm việc với Linux trong nhiều năm, với tư cách là người dùng cuối và lập trình viên, nhưng tôi không thể trả lời câu hỏi này. Không có cách nào để đặt dấu gạch chéo trong tên tệp, điều này hoàn toàn bị cấm bởi kernel. Bạn có thể vá hệ thống tệp của mình thông qua truy cập thiết bị khối hoặc sử dụng các ký tự trông tương tự từ Unicode, nhưng đó không phải là giải pháp.
Tôi hiểu rằng Linux ≠ Unix, nhưng nguyên tắc tương tự nên được áp dụng, vì hệ thống phải có khả năng trích xuất rõ ràng hệ thống phân cấp thư mục từ các đường dẫn.
Có ai biết, chính xác thì Kernighan và Pike nghĩ gì khi hỏi câu hỏi này? Câu trả lời được cho là gì? Chính xác thì 'mánh' là gì? Hoặc có thể hệ thống Unix ban đầu chỉ đơn giản là được phép thoát khỏi dấu gạch chéo này bằng cách nào đó?
CẬP NHẬT:
Tôi đã liên lạc với Brian Kernighan về câu hỏi và đó là những gì anh ấy trả lời:
Câu trả lời là (hoặc là) Bạn không thể.
Do đó, Timothy Martin đã đúng và được đánh dấu màu xanh lá cây.
a
và ép buộc hệ thống của bạn nghĩ rằng hệ thống tệp nằm trong miền địa phương EBCDIC? ASCII a
là 0x61, tương ứng với /
EBCDIC (mã trang 37)