Macbook / Linux的八月转储目录

我正在阅读“Unix编程环境”。 对目录的讨论经常使用od命令来获取目录内容的八进制转储。 但在1984年以后,在MacBook上已经禁用了目录上的od使用(返回'是一个目录')。 它似乎也被禁用在Linux上的目录。

我可以使用任何替代命令?

OS X内核禁止对目录进行read(2)操作 ,因此您将永远无法使用用户空间工具直接读取目录条目。

如果要从用户空间读取目录条目,则需要直接打开底层的块设备,读取其超级块,查找根索引节点,读取条目以recursion查找链中的下一个目录,重新感兴趣, 然后你可以阅读目录条目。 本质上,你将写一个用户空间文件系统驱动来完成这个任务。

旧的Unix系统有很多聪明之处,但是这绝对是一个尴尬的部分 – 当时创build目录的唯一方法是通过mkdir(1) 命令 ,它是setuid-root,因为创build目录有通过mknod(2)系统调用完成。 所以程序会经常调用system("mkdir /path/to/foo"); chdir("/path/to/foo"); system("mkdir /path/to/foo"); chdir("/path/to/foo"); 以创build一个新的目录。

根据http://www.unix.com/unix-advanced-expert-users/35034-using-od-directory.html,这是gnu od命令的一个限制,在FreeBSD的版本中有一个“问题” (我认为这是达尔文所依据的)。

根据网站的说法,这可能是依赖于文件系统的。 它还表示,这在Solaris上使用的目录上工作。

基本上,它看起来像说明依赖于你使用的是什么版本的UNIX。 没有已知的解决方法,我可以find这个工作在一个目录。