明らかな解決策は、1の終了コードを生成します。
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
可能な解決策の1つは「。」をスキップします。および「..」ディレクトリがありますが、名前が3文字より長いファイルのみを削除します。
bash$ rm -f .??*
削除できないのではないかと心配していなければ。&..誰が気にしますか?スクリプトのい出力が気にならない限り、明らかな解決策は他の人よりもかなり率直に入力することです。
—
マット
ご存知のとおり、..と。ファイルではありません。それらはディレクトリへの参照です。。(1つのドットのみ)は現在のディレクトリであり、..(2つのドット)は1レベル上のディレクトリへのリンクです。たとえば、cd / home / userの場合、は/ home / userと等しく、..は/ home /です。つまり、。は削除できません。および..(。?)
—
phuzion 2009
コメントマットに感謝します。コマンドごとの終了コードチェック(set -e)を使用して、スクリプトでコマンドをよく使用します。これらの場合、指示的な終了コードが必要です。
—
ヨナタンブロザ09
に固有のものはありません。そして.. rm -rfで削除からそれらを保護します。これは、rmの最新のバリエーションに追加された単なる保護メカニズムです。
—
クバンチク2009
そして、常にrm -rf。* ||があります。その1つのステートメントのset -e動作を回避したい場合はtrue。
—
ドミンゴイグナシオガルドス