Açık çözüm, 1 çıkış kodunu üretir:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Olası bir çözüm, "atlayacaktır". ve ".." dizinleri ancak adları 3 karakterden daha uzun olan dosyaları silecektir:
bash$ rm -f .??*
Eğer kaldıramadığın için endişelenmiyorsan. & .. sonra kimin umrunda? Bir betiğin çirkin çıktısı konusunda endişeli değilseniz, o zaman bariz çözümün diğerleri açıkçası daha az tipik olduğunu düşünüyorum.
—
Matt
Sadece bilirsin, .. ve. dosya değil Onlar dizinlere göndermelerdir. . (sadece tek bir nokta) mevcut dizin ve .. (iki nokta) bir seviye yukarı dizine bir bağlantıdır. Örneğin, eğer cd / home / user,. eşittir / home / user ve .. is / home / Başka bir deyişle, silemezsiniz. and .. (.?)
—
phuzion
Matt yorumunuz için teşekkürler. Komutu, komut başına çıkış kodu denetimi (set -e) ile birlikte kullanırım. Bu durumlarda gösterge niteliğinde bir çıkış kodu gereklidir.
—
Yonatan Broza
İçinde hiçbir şey yok. ve .. bu onları rm -rf ile silmekten korur. Bu sadece modern rm varyasyonlarında eklenen bir koruma mekanizmasıdır.
—
kubanczyk
Ve her zaman rm -rf var. * || Eğer sadece bir ifade için set -e davranışını aşmak istiyorsanız doğru.
—
Domingo Ignacio Galdos