「rm*」実行時に「一致する項目なし」を削除する方法

「rm*」実行時に「一致する項目なし」を削除する方法

を使用してzsh一致しないパターンを選択すると、rm出力がリダイレクトされても「一致項目が見つかりません」というメッセージが表示されます。

# rm * > /dev/zero 2>&1
  zsh: no matches found: *

このメッセージをどのように削除できますか?

ベストアンサー1

この動作は複数の要素によって制御されます。Zshのワイルドカードオプション。デフォルトでは、コマンドラインに一致しないワイルドカード式が含まれている場合、Zshは表示されるエラーメッセージを出力し、コマンドをまったく実行しません。次の 3 つの方法でこの機能を無効にできます。

  • setopt +o nomatch

    何も一致しないワイルドカード式が残り、エラーメッセージが表示されますrm( を使用して無効にすることはできますが、-f望ましくない場合は強制的に削除するので良いことではありません)。

  • setopt +o nullglob

    どれとも一致しないパターンは削除されます(したがって効果的に無視されます)。

  • setopt +o cshnullglob

    何も一致しないパターンは削除され、コマンドのすべてのパターンが削除されるとエラーが報告されます。

最後の2つはカバーされていますnomatch。これらのオプションはすべて設定を解除して設定できますsetopt -o …

nullglobシングルモードは、以下を使用して有効にできます。グローバルN予選例えば:

rm -f -- *(N)

おすすめ記事