rm: "。"または、「..」ディレクトリの削除を拒否します。 「..」をスキップします。

rm:

..ディレクトリから削除しようとすると、なぜエラーが発生するのですか?

rm: refusing to remove '.' or '..' directory: skipping '..'

私がなぜこれをするのか尋ねる前に:ただなぜなら。

ベストアンサー1

それはとの内容rmも再帰的に削除される一部のシェル(POSIXシェルを含む)のバグ機能を解決するために、ほとんどの実装に保護装置を追加しました。rm -rf .*...(これはForsythシェルやpdkshなどの派生物によって修正され、zsh少なくともfish1です。)

(このバグ機能のないシェルの)組み込み機能を使用できますrmzsh

zmodload zsh/files # to load and enable the builtin version of rm
                   # and a few other utilities
rm -rf ..

あるいは、BSD、GNU、findまたは互換性を使用して次のことを実行できます。

find .. -delete

明確に言えば、親ディレクトリ(現在の作業ディレクトリを含む)の内容を(再帰的に)削除します。

現在のディレクトリ(通常は最新のシステム)からアイテムのリンクを解除したい場合は..不可能です。そのエントリを含むディレクトリが存在する限り存在し、削除できません...一部のファイルシステムでは、仮想(ディレクトリファイルの物理エントリではない)でもあります。

これを削除しても(たとえば、debugfsディレクトリの内容を手動で編集して)、次にファイルシステムのチェックが完了すると再生成され(fsck)、一部のアプリケーション(cdPOSIXシェル組み込みなど)は完全に無視します。 (現在のディレクトリに関係なく、現在(保存されcd ..ている現在の作業ディレクトリの末尾からパスコンポーネントを削除します。)POSIXでは、$PWD....ドンdir/../whatever)ディレクトリと同じパスの場合。


1バージョン5.2には、この問題を解決するためのbashオプションが追加されましたglobskipdots

おすすめ記事