有人可以解释 linux/unix 命令中 -- 和 ** 的含义吗?

dea*_*pro 2 grep zsh disk-usage wildcards

du -ch -- **/*.jpg | grep total
Run Code Online (Sandbox Code Playgroud)

特别是,--(双破折号)和**(双星号)的真正含义是什么?

使用 Z 外壳

Kus*_*nda 5

in**与zsh类似*,但允许跨/in 路径名匹配。因此,该模式将扩展到具有当前目录中或以下任意位置**/*.jpg的文件名后缀的任何文件的路径名。.jpg

如果使用 启用,该模式也**可用。如果使用 启用的话, shell也有它。bashshopt -s globstarksh93set -o globstar

防止--任何以破折号开头的路径名(与上述模式匹配)被解释为du命令行选项。停止--命令行解析du以查找进一步的选项。这不依赖于 shell,而是标准实用程序的POSIX“实用程序指南”。

如果文件名通配模式更改--为./**/*.jpg.

*.jpg该命令将通过从输出中提取包含总计的行来提供当前目录中或当前目录下所有文件的总大小du(运行该命令而不| grep total查看du产生的内容)。