当我mdls -name kMDItemFSName -name kMDItemDateAdded -raw *
在包含目录的文件夹中运行 zsh 时- Java Code
,我收到以下错误:
mdls: unrecognized option `- Java Code'
我怎样才能解决这个问题?我尝试使用"*"
,但它根本没有 glob。
问题是因为-
其中一个目录中的选项。通常命令行标志在-
. 一个文件夹名称-Java Code
被视为一个这样的标志来mdls
命令它不喜欢。通常我们提供一个命令行标志分隔符的结尾,通过提供一个--
shell 意识到不需要更多的命令行标志。
mdls -name kMDItemFSName -name kMDItemDateAdded -raw -- *
这样,由于我们发出命令行标志已完成的信号,因此-
应该正确解析包含前导的文件夹名称。
这个问题是一个经常发生的问题,可以通过一个简单的mv
命令简单地重现,并创建一个包含 a-
的文件,当尝试移动文件时,该命令将失败。它需要通过做来修复mv --
大多数 shell 内置命令和 GNU 工具都支持此选项。POSIX 也建议这样做。从他们的指导方针之一中看到它。请参阅POSIX 实用程序约定 - 指南 10