..
ディレクトリから削除しようとすると、なぜエラーが発生するのですか?
rm: refusing to remove '.' or '..' directory: skipping '..'
私がなぜこれをするのか尋ねる前に:ただなぜなら。
ベストアンサー1
それはとの内容rm
も再帰的に削除される一部のシェル(POSIXシェルを含む)のバグ機能を解決するために、ほとんどの実装に保護装置を追加しました。rm -rf .*
.
..
(これはForsythシェルやpdkshなどの派生物によって修正され、zsh
少なくともfish
1です。)
(このバグ機能のないシェルの)組み込み機能を使用できますrm
。zsh
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
)、一部のアプリケーション(cd
POSIXシェル組み込みなど)は完全に無視します。 (現在のディレクトリに関係なく、現在(保存されcd ..
ている現在の作業ディレクトリの末尾からパスコンポーネントを削除します。)POSIXでは、$PWD
..
..
ドンdir/../whatever
)ディレクトリと同じパスの場合。
1バージョン5.2には、この問題を解決するためのbash
オプションが追加されましたglobskipdots
。