Bu sorunun daha çok ne olduğunu * düşündüğümden (ve rm olmadığı), başka bir yaklaşım deneyelim.
* Ne yaptığından emin değilseniz, ilk önce echo gibi zararsız bir komut kullanarak "test edebilirsiniz". Bunu çalıştırmadan önce, onları evinizde yönetirseniz ne göstereceklerini tahmin etmeye çalışın.
echo *
echo .*
Ama önce bir oyun alanı yaratalım ki yıldızlarla oynayalım ve neyle sonuçlandığımızı görelim.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Şimdi bu dizinde bizde:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Şimdi, echo komutunu kullanarak * neyin genişlediğine dikkat edin:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Öyleyse rm komutuyla ne olacağını görelim.
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Gördüğünüz gibi o sadece file2 dosyasını kaldırdı, çünkü * sadece file2 dosyasına genişledi. Rm -rf. * Yazarsanız, yazı yazmakla aynı olur
rm -rf . .. .file1
Ve dürüst olmak gerekirse, eğlenceli görünmüyor;)
Umarım bu sorunuzun * bölümünü açıklar.
Güncelleme:
Ancak Ankur Goel'in belirttiği gibi, rm'ye yerleşik bir tür koruma var (kabuk komutları için olağandışı bir durum :)
Yeni bir oyun alanı oluşturalım:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Şimdi tekrar buna sahibiz, ancak eğer testler çılgına dönmeye başlarsa, koruma olarak root tarafından sahip olunan test1 ile.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Öyleyse her şeyi kaldıralım:
cj@zap:~/star_test/test1/test2/test3$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2
Ve rm çıkarmadı gibi görünüyor. ve .. ona söylesek bile !!!
Yani bu uzun cevabın ardından, bununla ilgili herşeyi bir direkte çıkarmak güvenli olacaktır:
rm -rf * .*
Fakat bunu dikkatli kullanırım, çünkü tüm rm uygulamalarının böyle davrandığından emin değilim!
rm -rf ./*
şu anki dizini açıkça belirtelim ...