चूंकि मुझे लगता है कि यह सवाल अधिक है कि क्या करता है (और आरएम नहीं), चलो एक और दृष्टिकोण की कोशिश करें।
यदि आप अनिश्चित हैं कि * क्या करता है, तो आप इको जैसी हानिरहित कमांड का उपयोग करके पहले "परीक्षण" कर सकते हैं। इससे पहले कि आप इसे चलाएं, यह अनुमान लगाने की कोशिश करें कि यदि आप उन्हें अपने घर के डायर में चलाते हैं तो वे क्या दिखाएंगे।
echo *
echo .*
लेकिन पहले हम एक खेल का मैदान बनाएं, ताकि हम सितारों के साथ खेल सकें और देख सकें कि हम क्या कर रहे हैं।
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
अब इस dir में हमारे पास यह है:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
अब ध्यान दें कि गूंज कमांड का उपयोग करने में क्या फैलता है:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
तो देखते हैं कि rm कमांड से क्या होता है
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
जैसा कि आप देख रहे हैं कि उसने केवल फाइल 2 को ही हटाया है, क्योंकि * केवल फाइल 2 तक ही विस्तारित है। यदि आप rm -rf टाइप करेंगे। * जो लेखन के समान होगा
rm -rf . .. .file1
और सच कहूँ, तो मजा नहीं आता;)
आशा है कि यह आपके प्रश्न के * भाग को स्पष्ट करता है।
अद्यतन:
हालांकि अंकुर गोयल बताते हैं कि आरएम में निर्मित किसी प्रकार का संरक्षण है (शेल कमांड के लिए असामान्य प्रकार :)
चलो एक नया खेल का मैदान बनाएँ:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
तो अब हमारे पास यह फिर से है, लेकिन टेस्ट 1 के पास रूट के रूप में स्वामित्व है यदि आरएमएस बर्शकार जाना शुरू कर देता है।
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
तो चलो सब कुछ हटा दें:
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
और ऐसा लग रहा है कि आरएम ने नहीं हटाया। और .. भले ही हमने उसे कहा था !!!
तो इस लंबे जवाब के बाद यह एक डायर के साथ सब कुछ हटाने के लिए सुरक्षित हो जाता है:
rm -rf * .*
लेकिन मैं देखभाल के साथ इसका उपयोग करूंगा, क्योंकि मुझे यकीन नहीं है कि आरएम के सभी कार्यान्वयन इस तरह से व्यवहार करते हैं!
rm -rf ./*
और स्पष्ट रूप से वर्तमान निर्देशिका को निर्दिष्ट करूंगा ... लेकिन अंकुर को लगता है कि यह वैसे भी कोई मायने नहीं रखता है।