Rm -rf क्या करता है?


25

rm -rfफ़ाइलों या निर्देशिकाओं को हटाने के लिए क्या किया जाता है?

कैसे करते -rऔर -fविकल्प एक साथ काम?



16
@DanDascalescu क्योंकि यह मामूली रूप से मैन पेज को पढ़कर उत्तर दिया गया है, जो इस तरह के एक सवाल का जवाब देने के लिए किसी का पहला पोर्ट होना चाहिए।
डेविड रिचीर्बी

9
यह कोशिश करो और देखो। (
स्पॉयलर

3
हे भगवान ! यह सवाल DevRobot का एक प्रैंक होना चाहिए! मैन पेजों की सलाह के बिना आप संभवतः इसे अपने कर्म स्तर पर कैसे बना सकते हैं। अब ... क्या तुम इंसान हो!
Cbhihe

2
वास्तव में एक शरारत की तरह पूरी तरह से पढ़ता है। जैसे कि किसी ने पूछने की कोशिश की, "बारिश एच 2 ओ से बनी है?" (एक अच्छा जवाब होगा: आम तौर पर हाँ, लेकिन भविष्य में, एक बार मनुष्य पृथ्वी की वनस्पतियों का आधा हिस्सा नष्ट हो जाएगा, इसका 50% एसिड (अम्लीय वर्षा के रूप में) हो जाएगा
वाक्यविन्यास

जवाबों:


52

आदेश के rm -rfरूप में ही है rm -r -f

से rmकी आदमी पेज (प्रकार man rmएक टर्मिनल में यह देखने के लिए) -rकरता है:

remove directories and their contents recursively

और -fकरता है:

ignore nonexistent files and arguments, never prompt

इसलिए संयोजन में वे दोनों करते हैं।

वास्तव में यह एक बहुत ही खतरनाक कमांड है क्योंकि यह आपके द्वारा चुने गए डायरेक्टरी के भीतर पुन: सब कुछ हटा देगा (या आपके द्वारा चुनी गई फ़ाइल को हटा दें), और यह कभी भी आपको संकेत दिए बिना ऐसा करेगा।

कृपया इस कमांड का उपयोग सावधानी से करें!


@Paul, स्लैश क्या करेगा? मैं इस कमांड का उपयोग अक्सर डायरियां हटाने और w / oa स्लैश करने के लिए करता हूं।
ऑक्टोपस

1
@ ऑक्टोपस, अपने आप स्लैश रूट डायरेक्टरी को दर्शाता है। rm -rf /सैद्धांतिक रूप से आपके कंप्यूटर पर हर उस फ़ाइल को हटा देगा जो उस निर्देशिका में रहती है जिसके लिए आपने अनुमति लिखी है। यदि आप जड़ हैं, तो इसका मतलब है कि पूरे सिस्टम को मिटा देना। (व्यवहार में, यह काम नहीं करता है क्योंकि जीएनयू के rmपास एक विशेष मामला है जो rm -r /आपको तब तक अनुमति देने से इनकार करता है जब तक आप भी नहीं कहते --no-preserve-root।)
cjm

10
सभी समान, मैं rm -rf /यह देखने की कोशिश नहीं कर रहा हूं कि क्या यह ठीक से पकड़ा गया है।
cjm

2
@mattburnett यह VM में भी खतरनाक है: आपके पास ऐसे mounts हो सकते हैं जो VM के लिए स्थानीय नहीं हैं। विशेष रूप से, मेरा मानना ​​है कि होस्ट और वीएम के बीच फ़ाइलों को साझा करने के लिए वीएम पर होस्ट मशीन की निर्देशिकाओं में से एक को माउंट करना काफी सामान्य है।
hvd

1
@mattburnett मेरे पास VMs है। मेरे पास एक संगरोध VM नहीं है। मैं अभी अज्ञात निष्पादनयोग्य नहीं चला रहा हूं। :)
hvd

22

पिछले सही उत्तर के अलावा, मैं आपको मछली कैसे सिखाऊं:

जब आप इस बारे में निश्चित नहीं होते हैं कि एक कमांड कैसे काम करता है, तो क्या विकल्प हैं और यह क्या करता है, एक टर्मिनल खोलें और टाइप करें

man <command>

उदाहरण के लिए:

man rm

वहां पहुंचने के बाद, आप विकल्प खोज सकते हैं। एक आदमी पृष्ठ वास्तव में पढ़ने के लिए लंबा हो सकता है, इसलिए टर्मिनल प्रकार में:

/<pattern>

इसलिए, उदाहरण के लिए:

/-f

आप आसानी से उतर सकते हैं:

-f, --force
              ignore nonexistent files and arguments, never prompt

For -r do:

-r, -R, --recursive
              remove directories and their contents recursively

आप n(अगले) और N(पिछले) का उपयोग करके खोज परिणामों के बीच स्थानांतरित कर सकते हैं ।

बोनस:

यदि आपको कुछ करने की आवश्यकता है, लेकिन आप कमांड नाम नहीं जानते हैं, तो aproposमैन पेजों में खोजने के लिए उपयोग करें:

apropos <pattern>

उदाहरण के लिए:

apropos directory listing

8

rmनिकालने के लिए छोटा है। rझंडा निकालें निर्देशिका और उनकी सामग्री रिकर्सिवली और करने के लिए है fसाधन बल, और यह किसी भी पुष्टि संकेतों ओवरराइड करता है।


3
कड़ाई से बोलना r flag is to remove directories सही नहीं है। यह अपनी सामग्री के साथ निर्देशिकाओं को हटाता है, यह एक पुनरावर्ती ऑपरेशन है। आपके शब्दों के अनुसार, यह केवल निर्देशिकाओं को हटा देगा, इसके तहत उपखंड, फाइलों के बारे में क्या? चूंकि डायरेक्टरी एंट्री में केवल नाम-इनोड मैपिंग शामिल है, इससे केवल कोई मतलब नहीं है ..
heemayl

आप सही हैं, मैं अपना उत्तर संपादित करूंगा।
क्रिस

1
-r निर्देशिकाओं और उनकी सामग्री को पुनरावर्ती रूप से निकालता है ।
जिम बेल्टर

3

जैसा कि पहले ही उल्लेख किया गया है, rm -rf <ARG>फ़ाइलों को बलपूर्वक हटाने के लिए है, जहां <ARG>एक निर्देशिका है (हालांकि यह एक फ़ाइल ठीक हो सकती है)।

-r(पुनरावर्ती निष्कासन) की पूरी बात यह है कि rmयदि वे खाली नहीं हैं, तो निर्देशिकाओं को हटा नहीं सकते हैं, क्योंकि अंतर्निहित सिस्टम कॉल जो rmउपयोग करता है ( अनलिंक ) केवल खाली निर्देशिकाओं पर काम करता है । इस प्रकार, -rध्वज क्या करता है, गहराई-पहली खोज है जो निर्देशिकाओं में उतरती है और पहले फाइलें निकालती है, और केवल तब जब निर्देशिका खाली होती है - यह इसे हटा देगा। इसी प्रभाव को ध्वज के findसाथ कमांड के माध्यम से प्राप्त किया जाता है -delete(जब आप फ़िल्टरिंग को निर्दिष्ट नहीं करते हैं -type, लेकिन यह एक और कहानी है)।

के रूप में -f, यह दो चीजें करता है - एक आप को हटाने के लिए रोकता है कि क्या आप फ़ाइल को हटाना चाहते हैं या नहीं (जैसे कि जब आप किसी फ़ाइल को किसी अन्य उपयोगकर्ता के स्वामित्व वाली अपनी निर्देशिका से निकाल रहे हैं, तो यह rm: remove write-protected regular empty file 'f1'?पुष्टिकरण संकेत नहीं दिखाएगा ), और अनदेखा करता है गैर-मौजूदा फ़ाइलें। उदाहरण के लिए, गैर-मौजूद फ़ाइल नाम के साथ, आपको rm: cannot remove 'nonexistent': No such file or directoryत्रुटि मिलनी चाहिए ।

यह भी देखें:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.