fir*_*iku 24 slash filenames historical-unix
我刚刚在Unix Programming Environment,Kernighan 和 Pike 关于 Unix 的经典书籍中遇到了以下问题(我在 1984 年版第 79 页,ISBN:0-13-937699-2 中找到了以下文字):
练习 3-6。(技巧问题)如何将 / 放入文件名(即,不分隔路径组成部分的 /?
作为最终用户和程序员,我多年来一直在使用 Linux,但我无法回答这个问题。有没有办法把斜线的文件名,这是绝对内核禁止。您可以通过块设备访问修补文件系统,或使用 Unicode 中外观相似的字符,但这些都不是解决方案。
我明白,Linux ?Unix,但同样的原则应该适用,因为系统必须能够明确地从路径中提取目录层次结构。
有人知道,Kernighan 和 Pike 在问这个问题时到底在想什么吗?假设的答案是什么?“套路”究竟是什么?或者也许原始的 Unix 系统只是允许以某种方式逃避这个斜线?
更新:
我就这个问题联系了 Brian Kernighan,他是这样回答的:
答案是(或曾经)“你不能。”
因此,蒂莫西·马丁是对的,得到了绿色的勾号。
Tim*_*tin 14
也许答案与这个技巧问题的部分答案相同:
你如何从大象身上下来? 你没有。 你从一只鹅那里得到它。
来自 Brian W. Kernighan 和 Rob Pike 的“编程实践”,Ch。6,第。158:
当 Steve Bourne 编写他的 Unix shell(后来被称为 Bourne shell)时,他创建了一个包含 254 个文件的目录,文件名只有一个字符,每个字节值一个,除了 '\0' 和斜杠,这两个字符是不能出现在 Unix 文件名中。
我已经这样做了。这是在 1980 年左右某个时候在运行在 PDP-11 上的 UNIX 系统上。我创建了一个名为“WhatXNow?”的文件。然后我使用二进制文件“编辑器”来编辑磁盘设备并将 inode 中的“X”更改为“/”(文件系统已卸载)。
受害者从未想出如何删除它。
编辑:哎呀,Barmar 是对的,我没有看到那里关于不修补设备的行。是的,这是我编辑的目录,而不是 inode。有一阵子了 :-)