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 -- */
。 --
将告诉命令不要将任何以 -
开头的命令解释为选项,而是解释为文件名。
下午好,我最近下载了 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 -- */
。 --
将告诉命令不要将任何以 -
开头的命令解释为选项,而是解释为文件名。