一般的な再帰方向と具体的なrm方向を知りたいです。
rm 再帰は下向きにのみ動作します。そうですか?
実行中: sudo rm -R *.QTFS
現在のディレクトリとそのサブディレクトリにあるすべての* .QTFSファイルが削除されます。そうですか?
表示された現在のディレクトリにはより良い単語がないため、リンクも含まれていますが、ls -lha
なぜ再帰がディレクトリツリーのこれらの上に従わないのですか? rmアプリに人為的な制限がありますか、それとも両方が本当ですか?.
..
.
..
答え1
rm
再帰は下にしか行けませんか?
rm -r x y
x
そしてy
その中のすべての内容(ディレクトリの場合)は削除されますが、親やその他のすべての内容は削除されません。
実行中:
sudo rm -R *.QTFS
現在のディレクトリとそのサブディレクトリにあるすべての* .QTFSファイルが削除されます。そうですか?
習慣。名前付きのすべてのファイル*.QTFS
とその中のすべてのファイルを再帰的に削除します。目次と呼ばれ、*.QTFS
ディレクトリ自体も同じです。追加の削除動作が必要な場合は、次を使用します。find -delete
。
表示された現在のディレクトリにはより良い単語がないため、リンクも含まれていますが、
ls -lha
なぜ再帰がディレクトリツリーのこれらの上に従わないのですか? rmアプリに人為的な制限がありますか、それとも両方が本当ですか?.
..
.
..
これは人為的な制限ですrm
。
しかし、実際にはそれほど人工的なものではありません。これが動作する唯一の方法です。各ディレクトリのエントリを見て、rm
親リンクをたどると、システム上のすべてのファイルが削除さ..
れます。rm -r
..
/
rm
..
.
リスト内容を明示的に無視します。
実際に自分で試してみることができます。 Run を実行すると、rm -r .
ほとんどのrm
実装は実行を拒否し、エラーを明示的に報告します。
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(ニュースGNUからrm
;その他同様)。明示的なパラメータではなく暗黙的にこれらの項目が見つかった場合は、その項目を無視して続行します。この行動はPOSIXの要件。 GNUrm
と多くの BSD では、以下が提供しています。fts_read
階層巡回関数系列。
それとも実際で
.
はない何か..
?
.
そして..
一般的に言えば実際のディレクトリエントリですが、これはファイルシステムによって異なります。それにもかかわらず、ほとんどすべてのユーザーコードの実際のアイテムとしてレンダリングされます。多くのソフトウェア(同様にrm
)には、暴走や不要な再帰をキャプチャまたは防止するためにアクションを特別に処理する機能があります。
答え2
Michael Homerが書いた内容に加えて、親ディレクトリへの間違いの再帰を困難にする別の要素があります。
ホームディレクトリに移動し、次のように入力します。
echo *s*
文字「s」を含むファイルとディレクトリのリストが表示されることがあります。ただし、ドットで始まるファイルは表示されません。これを表示するには、次のものを使用できます。
echo .*s*
これは、シェルが*
先行点を含むように拡張を拒否するためです。これは次のことを意味します。
rm -fr *
に再帰されません..
。