为什么“ls”偶尔只输出“.” 在外部驱动器的根目录中?

lee*_*sky 9 osx ls usb-drive

在我的U盘根目录下,有时我运行时ls,输出正常,并列出文件。在其他时候,输出只是一行:

$ ls
.
Run Code Online (Sandbox Code Playgroud)

如果我ls -la在其中一次尝试,我会得到这个:

$ ls -la
ls: .: Invalid argument
Run Code Online (Sandbox Code Playgroud)

如果我ls多次背靠背运行,它似乎基本上是随机返回正常输出或异常输出。

ls似乎在其他目录中正常工作。ls $drivename即使在父目录中ls ..似乎也能正常工作,而在子目录中似乎也能正常工作。(虽然我不能 100% 确定那些“正常工作”的,因为行为是不确定的。)我尝试了另外两个外部 USB 驱动器并得到了相同的行为。

这里发生了什么?我使用的是 Mac OS X 10.11.3。

编辑:好主意,但我似乎没有使用别名,并/bin/ls给出相同的结果。

小智 6

这可能是最新版本的 OSX 上 FAT32 文件系统驱动程序中的错误。这也仅在工作目录位于已安装驱动器的根目录时才会出现。如果它位于子目录或系统上的任何其他地方,事情似乎可以正常工作。

该线程中有一些有趣的讨论,包括系统跟踪。 https://github.com/robbyrussell/oh-my-zsh/issues/4161