ls - 在某些目录中不工作

ls - Not working in certain directories

下午好,我最近下载了 this .bash_profile 安装程序,但是在 运行 ls 命令时 运行 遇到了一个小问题在终端(Mac OS X - Sierra,10.12.6)。

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

如你所见,我没有别名,ls 是它应该在的地方(至少我希望如此)。

这是怎么回事?我应该做些什么来尝试补救这种情况?

问题在于 * 在 shell 中的工作方式。

有些人认为,当您编写 ls * 时,shell 将 运行 ls 传递通配符,该命令将列出所有文件。但实际上是 shell 扩展为 * 到所有文件的列表并将它们传递给 ls.

TL;DR; 您的目录名称以 - 开头! (我认为它的名字只是 -)。因此,当您 运行 ls -d */ 时,它会扩展为 ls -d -/ bar/ muz/ ... 之类的东西。您可以使用 echo ls -d */

查看实际扩展

解决办法:写ls -d -- */-- 将告诉命令不要将任何以 - 开头的命令解释为选项,而是解释为文件名。