![为什么这 2 个 zsh 内联命令返回不同的结果(Mac OS Sonoma)?](https://linux22.com/image/230388/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%202%20%E4%B8%AA%20zsh%20%E5%86%85%E8%81%94%E5%91%BD%E4%BB%A4%E8%BF%94%E5%9B%9E%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C%EF%BC%88Mac%20OS%20Sonoma%EF%BC%89%EF%BC%9F.png)
所以我一直在尝试将 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 permitted
No such file or directory
/Library/Caches
/System/Volumes
/private/var
date