この2つのzshインラインコマンドが異なる結果を返すのはなぜですか(Mac OS Sonoma)?

この2つのzshインラインコマンドが異なる結果を返すのはなぜですか(Mac OS Sonoma)?

だから私はMac OSの「dot_bar」ファイルをコアファイルにマージしようとしました。私がしたいことの1つは、私の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」なのかだけだと思います。

出力が異なる理由は何ですか?つまり、最初のオプションは終了日時を印刷せず、2番目のオプションは終了日時を印刷しますか?

ありがとう、

非常に混乱:)

答え1

これは&&、「前のコマンドが正常に完了した場合にのみ、次のコマンドを実行します」を意味します。したがって、findコマンドが失敗した場合、つまりゼロ以外の状態で終了すると、これが発生します。これは、ファイルが見つかったかどうかには関係がなく、find実際に検索できない場合に発生し、検索できますが何も見つからない場合にも発生します。私の考えでは、再試行すると、2>/dev/null2番目のコマンドがエラーを返すことがわかります。

表示するには:

$ 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 /コマンドにエラーが発生したことを示します。実際、Kusalalanandaはコメントでsudo find /、または、および、およびその他のアイテムのコンテンツに対してさまざまなエラーを返したと述べました。これは、コマンドがゼロ以外の終了コード(失敗)で終わったため、2番目のコマンドが実行されないことを意味します。Operation not permittedNo such file or directory/Library/Caches/System/Volumes/private/vardate

関連情報