为什么这 2 个 zsh 内联命令返回不同的结果(Mac OS Sonoma)?

为什么这 2 个 zsh 内联命令返回不同的结果(Mac OS Sonoma)?

所以我一直在尝试将 mac OS 中的“dot_bar”文件合并到其核心文件中。我想做的一件事是找到我的 Mac(M1 MacBook Air)上的所有“dot_bar”文件。查找需要一些时间,因此想将文件列表输出与日期/时间括起来。

所以经过一些实验后我执行了 -

(date "+%Y-%m-%d_%H-%M") && sudo -A find / -name "._*" 2>/dev/null &&
  (date "+%Y-%m-%d_%H-%M")

这显示开始日期/时间和“dot_bar”文件,但无法显示结束日期/时间。

将代码更改为 -

(date "+%Y-%m-%d_%H-%M") && sudo -A find /Volumes -name "._*" 2>/dev/null && 
  (date "+%Y-%m-%d_%H-%M")

显示开始日期/时间、文件列表和结束日期/时间。

因此,我认为唯一的区别是查找路径是“/”还是“/Volumes”。

为什么输出不同 - 即第一个选项不打印结束日期/时间,第二个选项打印结束日期/时间?

谢谢,

很困惑 :)

答案1

&&意味着“如果前一个命令成功完成,则仅运行下一个命令”。因此,如果find命令失败,即以非 0 状态退出,就会发生这种情况。这与是否找到任何文件无关,如果find无法实际搜索,则会发生这种情况,如果可以搜索但什么也没找到,则会发生这种情况。我的猜测是,如果您再试一次,但如果没有,2>/dev/null您会看到第二个命令返回错误。

为了显示:

$ find . -name file_that_does_not_exist && echo yes
yes
$ find directory_that_does_not_exist -name whatever && echo yes
find: ‘directory_that_does_not_exist’: No such file or directory
$

因此,这表明该find /命令遇到错误。事实上,Kusalananda 在评论中指出,该评论返回关于、 或和、、 以及其他地方下的内容的sudo find /各种错误。这意味着该命令以非 0 退出代码(失败)结束,因此第二个命令不会运行。Operation not permittedNo such file or directory/Library/Caches/System/Volumes/private/vardate

相关内容