संपूर्ण फ़ाइल सिस्टम को हटाना क्यों संभव है?


24

के माध्यम से मेरे पूरे फाइल सिस्टम को हटाने की कुख्यात गलती करने के बाद sudo rm -rf /*, मैंने जो भीषण क्षति की थी, उससे उबरने और इस तथ्य का सामना करने के बाद कि मैं अपने जीवनकाल के 6 साल खो चुका हूं, मैं सोच रहा था कि ऐसा करना क्यों संभव है, और इस गलती को रोकने के लिए क्या किया जा सकता है।

एक समाधान जो मुझे सुझाया गया था, वह मेरे खाते से रूट एक्सेस को रद्द कर रहा है, लेकिन यह असुविधाजनक है, क्योंकि बहुत सारी कमांड को रूट एक्सेस की आवश्यकता होती है और जब आपको हर दिन कुछ दर्जन कमांड चलाना पड़ता है, तो यह कष्टप्रद हो जाता है।

अपने सिस्टम का बैकअप लेना स्पष्ट तरीका है। लेकिन एक बैकअप को बहाल करने के लिए कुछ डाउनटाइम की भी आवश्यकता होती है, और आपके सिस्टम पर निर्भर करता है कि डाउनटाइम दिन या सप्ताह हो सकता है, जो कुछ मामलों में अस्वीकार्य हो सकता है।

मेरा सवाल है: जब उपयोगकर्ता अपने फाइल सिस्टम को हटाने की कोशिश करता है तो पुष्टि क्यों लागू नहीं की जाती है? ताकि जब आप वास्तव में ऐसा करना चाहते हैं, तो आप केवल वाई को हिट करें या दर्ज करें, और यदि आप कम से कम नहीं करते हैं तो आप सब कुछ नहीं खोते हैं।


देखें serverfault.com/q/337082

20
"ऐसा करना क्यों संभव है?" क्यों should't यह संभव हो सकता है? एक निर्देशिका पदानुक्रम की सामग्री को हटाने के लिए पूरी तरह से अच्छे कारण हैं, और इसके बहुत सारे उप-भाग हैं, /जिन्हें हटाने के लिए लगभग उतना ही बुरा होगा ( /etc/उदाहरण के लिए)। बस यह rmतय करना काम नहीं है कि कौन सी निर्देशिकाओं को आसानी से हटाया जा सकता है या नहीं।
20

2
शीर्षक कहता है "सिस्टम को हटाना क्यों संभव है?" जबकि सवाल खुद से पूछता है "मेरा सवाल यह है: जब उपयोगकर्ता अपने फाइल सिस्टम को हटाने की कोशिश करता है तो पुष्टि क्यों लागू नहीं की जाती है?"। तो इससे प्रश्न अस्पष्ट हो जाता है। आपका कौन सा प्रश्न वास्तविक है इसलिए हम कम से कम जानते हैं कि क्या उत्तर दिया जाए? कृपया अपनी पोस्ट को स्पष्ट करने के लिए संपादित करें
सर्गी कोलोडाज़हनी

3
वास्तव में यहाँ सवाल क्या है? मैं तीन देख सकता हूं: (1) यह क्यों संभव है? (२) इसे करने से कैसे रोका जाए ?, और (३) पुष्टि क्यों लागू नहीं की गई? - वे एक ही सवाल नहीं हैं, पहला तर्क के लिए पूछता है, दूसरा उपकरण के लिए। (तीसरा, दूसरे से संबंधित है, लेकिन अभी भी वास्तव में समान नहीं है। एक पुष्टि कुछ को रोकने का एकमात्र तरीका नहीं है।)
ilkkachu

10
यदि आप प्रश्न के लेखक से स्पष्टीकरण नहीं मांग रहे हैं, तो कृपया कोई टिप्पणी न करें । मुझे यहाँ बहुत सारी आत्म-बधाई वाली टिप्पणियां दिखाई देती हैं, जिसमें बताया गया है कि झंडे का क्या अर्थ है, या बैकअप या जो कुछ भी नहीं है, यह न जानने के लिए यह ओपी की गलती है। मुझे यह जानकर बहुत ख़ुशी हुई कि हमारे कई उपयोगकर्ता बैकअप लेने के लिए पर्याप्त समझदार हैं और ऐसी आज्ञाएँ नहीं चलाते हैं जिन्हें वे नहीं समझते हैं। यह उनके लिए बिल्कुल शानदार है, लेकिन मूल रूप से ओपी के लिए अनजाने में, जिसने संभवतः यह सबक अब तक सीख लिया है। तो आइए हम अपनी प्रतिभा के आधार पर रुकें और सवाल का जवाब दें।
टेराडो

जवाबों:


16

rmएक निम्न स्तर का सिस्टम टूल है। ये उपकरण यथासंभव सरल रूप से बनाए गए हैं, क्योंकि वे किसी भी सिस्टम पर मौजूद होने चाहिए। rmविशेष रूप से पुष्टिकरण संकेतों के संबंध में अच्छी तरह से ज्ञात व्यवहार की उम्मीद की जाती है ताकि इसका उपयोग लिपियों में किया जा सके।

प्रॉम्प्ट पर एक विशेष केस जोड़ना rm /*संभव नहीं होगा क्योंकि rm कमांड इसे इस रूप में नहीं देखता है। *वाइल्डकार्ड के लिए पारित किए जाने से पहले खोल से विस्तार किया जाता है rm, इसलिए वास्तविक आदेश जो एक विशेष मामले की जरूरत है की तरह कुछ होगा rm /bin /boot /dev /etc /home /initrd.img /lib /lib64 /lost+found /media /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var /vmlinuz। इस मामले की जांच करने के लिए कोड जोड़ना (जो कि अलग-अलग linuxes पर शायद अलग होगा) एक जटिल चुनौती होगी और साथ ही साथ सूक्ष्म त्रुटियों से भी ग्रस्त होगी। मानक लाइनक्स में विकल्प के बिना rmहटाने से इनकार करके सिस्टम विनाश के खिलाफ एक डिफ़ॉल्ट सुरक्षा है।/--no-preserve-root

डिफ़ॉल्ट रूप से आपके सिस्टम को इस तरह से हटाने के खिलाफ तीन सुरक्षाएँ हैं:

  1. अनुमतियाँ - नियमित उपयोगकर्ता महत्वपूर्ण फ़ाइलों को निकालने में सक्षम नहीं होंगे। आपने इसे सूडो के साथ दरकिनार कर दिया
  2. निर्देशिकाएँ - डिफ़ॉल्ट रूप से rm निर्देशिकाओं को नहीं हटाएगा। आपने -r ध्वज के साथ इसे दरकिनार कर दिया
  3. संरक्षित फाइलें लिखें - डिफ़ॉल्ट रूप से, आरएम एक लिखित संरक्षित फ़ाइल को हटाने से पहले पुष्टि के लिए पूछेगा (इससे सभी क्षति को रोका नहीं जा सकता था, लेकिन सिस्टम अपरिवर्तनीय होने से पहले एक संकेत प्रदान कर सकता है)। आपने -f ध्वज के साथ इस सुरक्षा को दरकिनार कर दिया

किसी फ़ोल्डर की सभी सामग्रियों को हटाने के बजाय, चलाने के बजाय rm /path/to/folder/*, ऐसा करें rm -rf /path/to/folder, mkdir /path/to/folderक्योंकि यह --preserve-rootसुरक्षा को ट्रिगर करेगा और साथ ही फ़ोल्डर में किसी भी डॉटफ़ाइल्स को हटा देगा।


3
"rm से अच्छी तरह से ज्ञात व्यवहार की उम्मीद है" और यह वास्तव में POSIX मानक द्वारा निर्दिष्ट टूल में से एक है। "वह * वाइल्डकार्ड को आरएम पास होने से पहले शेल द्वारा विस्तारित किया जाता है" बिल्कुल, इसलिए सभी प्रकार के मापदंडों के लिए चेक जोड़ते हैं, जो कि वास्तविक निर्देशिकाओं और फाइलों के लिए सहानुभूति हो सकती है, /बहुत सारे संयोजन और विचार करेंगे, इसलिए यह व्यावहारिक नहीं है। और मानकों के विचार पर वापस आते हुए, इस तरह के चेक जोड़ने से लगातार व्यवहार टूट जाएगा
सर्गी कोलोडाज़नी

यही कारण safe-rmहै कि चारों ओर एक आवरण है rm: इस तरह यह हर एक तर्क (पूरे यादृच्छिक कमांड लाइन के बजाय) की जांच कर सकता है, यह सत्यापित करें कि यह कॉन्फ़िगर करने योग्य ब्लैकलिस्ट पर नहीं है और केवल तभी rmसत्यापित तर्कों के साथ कॉल करें । यह न तो बहुत जटिल है और न ही त्रुटियों से ग्रस्त है।
मिठाई

59

मिलिए safe-rmसुरक्षित-आरएम स्थापित करें, " rmआकस्मिक विलोपन को रोकने के लिए कमांड के चारों ओर आवरण ":

Safe-rm rmएक रैपर के साथ बदलकर महत्वपूर्ण फाइलों के आकस्मिक विलोपन को रोकता है जो फाइलों और निर्देशिकाओं के एक विन्यासित ब्लैकलिस्ट के खिलाफ दिए गए तर्कों की जांच करता है जिन्हें कभी भी हटाया नहीं जाना चाहिए।

जो उपयोगकर्ता इन संरक्षित फ़ाइलों या निर्देशिकाओं में से एक को हटाने का प्रयास करते हैं, वे ऐसा करने में सक्षम नहीं होंगे और इसके बजाय एक चेतावनी संदेश दिखाया जाएगा। ( man safe-rm)

यदि ऊपर दिया गया लिंक आपके लिए काम नहीं करता है, तो आप sudo apt install safe-rmइसके बजाय इसका उपयोग करें । डिफ़ॉल्ट कॉन्फ़िगरेशन में पहले से ही सिस्टम निर्देशिकाएं हैं, आइए rm /*उदाहरण के लिए प्रयास करें :

$ rm /*
safe-rm: skipping /bin
safe-rm: skipping /boot
safe-rm: skipping /dev
safe-rm: skipping /etc
safe-rm: skipping /home
safe-rm: skipping /lib
safe-rm: skipping /proc
safe-rm: skipping /root
safe-rm: skipping /sbin
safe-rm: skipping /sys
safe-rm: skipping /usr
safe-rm: skipping /var
…

जैसा कि आप देखते हैं, यह आपको हटाने से रोकता है /home, जहां मुझे लगता है कि आपकी व्यक्तिगत फाइलें संग्रहीत हैं। हालाँकि, यह आपको हटाने ~या इसके किसी भी उपनिर्देशिका को रोकने से नहीं रोकता है यदि आप उन्हें सीधे हटाने की कोशिश करते हैं। ~/precious_photosनिर्देशिका को जोड़ने के लिए बस इसके पूर्ण पथ को जोड़ने के साथ टिल्ड की safe-rmकॉन्फिग फाइल में हल किया जाता है /etc/safe-rm.conf, जैसे:

echo /home/dessert/precious_photos | sudo tee -a /etc/safe-rm.conf

ऐसे मामलों में जहां आप को चलाने के लिए rmबिना sudo1 और -fझंडा इसे करने के लिए एक अच्छा विचार है एक जोड़ने केalias अपने खोल कि बनाता है के लिए rmके -iध्वज डिफ़ॉल्ट। इस तरह rmहर फ़ाइल को हटाने से पहले पूछते हैं:

alias rm='rm -i'

इसी तरह से उपयोगी झंडा है -I, बस यह है कि यह केवल "तीन से अधिक फ़ाइलों को हटाने से पहले एक बार चेतावनी देता है, या जब पुनरावर्ती को हटाता है", जो कि "सबसे कम घुसपैठ की तुलना में कम है -i, जबकि अभी भी अधिकांश गलतियों से सुरक्षा प्रदान करता है":

alias rm='rm -I'

इन उपनामों का सामान्य खतरा यह है कि आप आसानी से आपको बचाने के लिए उन पर भरोसा करने की आदत डाल लेते हैं, जो एक अलग वातावरण का उपयोग करते समय बुरी तरह से पीछे हट सकता है।


1: sudoध्यान न दी उपनाम , एक के आसपास है कि परिभाषित करते हुए काम कर सकते हैं alias sudo='sudo ', हालांकि


25

पुष्टि पहले से ही है, समस्या -fकमांड में है, अर्थात --force; जब उपयोगकर्ता एक ऑपरेशन को बल देता है, तो यह माना जाता है कि वे जानते हैं कि वे क्या कर रहे हैं (जाहिर है कि एक गलती हमेशा जोड़ सकती है)।

एक उदाहरण:

 rm -r ./*
 rm: remove write-protected regular file './mozilla_mvaschetto0/WEBMASTER-04.DOC'? N
 rm: cannot remove './mozilla_mvaschetto0': Directory not empty
 rm: descend into write-protected directory './pulse-PKdhtXMmr18n'? n
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-bolt.service-rZWMCb'? n
 rm: descend into write-protected directory './systemd-private-     890f5b31987b4910a579d1c49930a591-colord.service-4ZBnUf'? n
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-fwupd.service-vAxdbk'? n
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-minissdpd.service-9G8GrR'? 
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-ModemManager.service-s43zUX'? nn
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-rtkit-daemon.service-cfMePv'? n
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-systemd-timesyncd.service-oXT4pr'? n
 rm: descend into write-protected directory './systemd-private-890f5b31987b4910a579d1c49930a591-upower.service-L0k9rT'? n

यह --forceविकल्प के साथ अलग है: मुझे कोई पुष्टि नहीं मिलेगी और फाइलें हटा दी जाती हैं।

समस्या कमांड और उसके मापदंडों को जानने के manलिए है, उदाहरण के लिए एक कमांड में अधिक नेविगेट करें (भले ही कमांड एक ट्यूटोरियल में पाया जाता है): पहली बार जब मैंने कमांड को देखा तो tar xzf some.tar.gzमैं खुद से पूछ रहा हूं, "क्या xzfमतलब है? " "

तब मैंने टार मैनपेज पढ़ा और इसकी खोज की।


मुझे नहीं लगता कि यहां प्रासंगिक है। उस बिंदु पर जहां rm पहली बार राइट-प्रोटेक्टेड या जो भी फाइल मांगता है, वह पहले से ही महत्वपूर्ण फाइलों का एक पूरा गुच्छा हटा सकता है।
जोनास शेफर

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

2
Rmdir एक फ़ोल्डर को हटाने का सबसे सुरक्षित तरीका है
AtomiX84

rmडिफ़ॉल्ट रूप से पुष्टि के लिए नहीं पूछता है, यह केवल इसे लिखने के लिए सुरक्षित निर्देशिका और फ़ाइलों के लिए पूछता है। यदि आप अपनी मशीन पर उस कमांड को चलाते हैं तो आपने अपनी बहुत सारी फाइलें डिलीट कर दी हैं। यदि आपको rmपुष्टि के लिए पूछने की आवश्यकता है, तो आपको -iपैरामीटर पास करने की आवश्यकता है । उदाहरण के लिए:rm -ir ./*
डैन

8

बिना बैकअप के दौड़ने का मतलब है कि आपको कभी भी कोई गलती नहीं करने के लिए सुपर सावधान रहना होगा। और आशा है कि आपका हार्डवेयर कभी विफल नहीं होगा। (यहां तक ​​कि RAID आपको दोषपूर्ण RAM के कारण होने वाले फाइल सिस्टम भ्रष्टाचार से नहीं बचा सकता है।) तो यह आपकी पहली समस्या है। (जो मुझे लगता है कि आप पहले से ही महसूस कर चुके हैं और भविष्य में बैकअप कर रहे हैं।)


लेकिन ऐसी चीजें हैं जो आप इस तरह की गलतियों की संभावना को कम करने के लिए कर सकते हैं:

  • rm='rm -I'3 से अधिक चीजों को हटाने पर संकेत देने के लिए उपनाम ।
  • उपनाम mv और cp mv -iऔर cp -i(इन के लिए कई सामान्य उपयोग-मामलों में एक गंतव्य फ़ाइल को अधिलेखित करना शामिल नहीं है)।
  • उर्फ sudo='sudo 'करने के लिए पहला तर्क पर उर्फ विस्तार करने के लिएsudo

मुझे लगता rm -Iहै कि बहुत अधिक उपयोगी है rm -i। यह आमतौर पर सामान्य उपयोग के दौरान संकेत नहीं करता है, इसलिए टेटिंग ने संकेत दिया कि जब आपको उम्मीद नहीं थी कि यह बहुत अधिक ध्यान देने योग्य / बेहतर चेतावनी है। के साथ -i(इससे पहले कि मुझे पता चलता है -I), मुझे \rmउर्फ विस्तार को अक्षम करने के लिए टाइप करने की आदत है , यह सुनिश्चित करने के बाद कि मैं सही ढंग से कमांड टाइप कर रहा हूं।

आप को बचाने के लिए rm -iया -Iउपनाम पर भरोसा करने की आदत नहीं डालना चाहते हैं । यह आपकी सुरक्षा पंक्ति है जिसे आप आशा करते हैं कि इसका उपयोग कभी नहीं किया जाएगा। अगर मैं वास्तव में अंतःक्रियात्मक रूप से चयन करना चाहता हूं कि कौन से मिलान को हटाना है, या मुझे यकीन नहीं है कि मेरा ग्लोब कुछ अतिरिक्त फाइलों से मेल खा सकता है, तो मैं मैन्युअल रूप से टाइप करता हूं rm -i .../*whatever*। (मामले में एक अच्छी आदत है कि आप कभी भी अपने उपनामों के बिना एक वातावरण में हैं)।

पहले Enterटाइप करके वसा-छलनी से बचाव करेंls -d /*foo* , फिर ऊपर-तीर और उसके rm -rबाद आप टाइप करना समाप्त करें। तो कमांड लाइन में कभी भी rm -rf ~/या किसी भी बिंदु पर समान खतरनाक कमांड नहीं होते हैं । आप केवल बदलकर "हाथ" यह lsकरने के लिए rmके साथ नियंत्रण-एक, आल्ट-घ लाइन की शुरुआत में जाने के लिए और जोड़ने -rया -fलिखना समाप्त करने के बाद किया है ~/some/sub/dir/आदेश का हिस्सा है।

आप जो हटा रहे हैं, उसके आधार पर, वास्तव में ls -dपहले चलाएं , या नहीं, अगर आप टैब-पूर्णता के साथ जो कुछ भी देखते हैं, उसमें कुछ भी नहीं जोड़ा जाएगा। आप rm(बिना -rया इसके साथ -rf) शुरू कर सकते हैं, इसलिए यह सिर्फ नियंत्रण-ए / नियंत्रण-अधिकार (या alt + f) / स्थान / है -r

(शब्दों को स्थानांतरित करने के लिए कंट्रोल-एरो या alt + f / b की तरह जल्दी से घूमने के लिए बैश / रीडलाइन के शक्तिशाली एडिटिंग कीबाइंडिंग का उपयोग करें, और पूरे शब्दों को alt + backspace या alt + d, या control-w के साथ मारें और नियंत्रित करें। लाइन की शुरुआत में मारने के लिए -u और अगर आप एक कदम भी आगे जाते हैं तो नियंत्रण संपादित करने के लिए / / नियंत्रण करें। और निश्चित रूप से ऊपर-तीर इतिहास जिसे आप नियंत्रण-आर / नियंत्रण-एस के साथ खोज सकते हैं।)

बचने के लिए -rfजब तक आपको वास्तव में केवल-पढ़ने वाली फ़ाइलों को हटाने के बारे में संकेत देने की आवश्यकता न हो ।

एक sudoकमांड पर रिटर्न दबाने से पहले सोचने के लिए अतिरिक्त समय लें । खासकर यदि आपके पास पूर्ण बैकअप नहीं है, या अब उनसे बहाल करने के लिए एक बुरा समय होगा।


6

वैसे संक्षिप्त जवाब इस तरह के आदेश को नहीं चलाना है।

लंबी कहानी यह है कि यह अनुकूलन का हिस्सा है। अनिवार्य रूप से यहाँ खेलने के दो कारक हैं। एक तथ्य यह है कि आप सभी फ़ाइलों को संशोधित करने के लिए स्वतंत्र हैं।

दूसरा यह है कि आरएम कमांड एक फ़ोल्डर के तहत सभी फाइलों को हटाने के लिए सहायक सिंटैक्टिक चीनी प्रदान करता है।

प्रभावी रूप से इसे यूनिक्स मशीनों के एकल सरल टेंट के रूप में बहाल किया जा सकता है। सब कुछ एक फाइल है । मामलों को बेहतर बनाने के लिए, एक्सेस कंट्रोल हैं, लेकिन ये आपके उपयोग से ओवरराइड हैं

sudo

मुझे लगता है कि आप यह सुनिश्चित करने के लिए एक उपनाम या फ़ंक्शन जोड़ सकते हैं कि यह कभी भी चलाया नहीं जा सकता।


4

यदि आपका सिस्टम फ़ाइल स्थान उपयोग अपार नहीं है (और इन दिनों 'अपार' का अर्थ है 'सैकड़ों गीगाबाइट या अधिक') कुछ वर्चुअल मशीन इंस्टेंसेस बनाएँ, और हमेशा एक के अंदर काम करें। पुनर्प्राप्ति बस एक बैकअप उदाहरण का उपयोग करके प्रवेश करेगी।

या आप एक चिरोट जेल बना सकते हैं, और इसके अंदर काम कर सकते हैं। यदि आपको ट्रैश हो गया, तो भी आपको कुछ रिकवरी की आवश्यकता होगी, लेकिन इससे काम करने के लिए एक रनिंग (एनक्लोजिंग) सिस्टम आसान होगा।


यह संभवतः सबसे प्रभावी उत्तर है, क्योंकि यह किसी भी क्षति, यहां तक ​​कि तीसरे पक्ष की लिपियों से भी रक्षा कर सकता है। आपको केवल वास्तविक मैलवेयर के बारे में चिंता करनी होगी।
PyRulez

दूसरे कोण की बात। यह पूछने लायक है कि आपको पहले स्थान पर पुनरावर्ती विलोपन करने की आवश्यकता क्यों है। हो सकता है कि किसी परियोजना को हटाने के लिए वास्तव में कुछ स्क्रिप्ट की आवश्यकता हो, आदि
लोरेन रोसेन

"यह पूछने के लायक है कि आपको पहली बार पुनरावर्ती हटाने की आवश्यकता क्यों है।" ठीक है, सिर्फ इसलिए कि वहाँ कमांड में निर्मित नहीं है इसका मतलब यह नहीं है कि आप अभी भी गलती नहीं कर सकते। थर्ड पार्टी स्क्रिप्ट किसी निर्देशिका से एक-एक करके फाइलें डिलीट कर सकती हैं। और सिस्टम को बोर्क करने के अन्य तरीके हैं जो केवल एक फ़ाइल को छूते हैं। हालांकि, मदद से प्रतिस्थापित rmकरना safe-rm, कम से कम।
PyRulez

स्क्रिप्ट के साथ मेरी धारणा यह थी कि इसमें एक 'प्रोजेक्ट' या इसी तरह की एक अंतर्निहित धारणा होगी। शायद आपके पास प्रोजेक्ट रूट नामक एक खाली फ़ाइल होगी .project_root, या, यदि फ़ाइल सिस्टम इसका समर्थन करता है, तो निर्देशिका पर एक विशेषता। फिर, स्क्रिप्ट फ़ाइल ट्री को प्रोजेक्ट रूट की तलाश में जाएगी, और यह शिकायत करेगी कि वर्तमान निर्देशिका किसी प्रोजेक्ट में नहीं थी। या, यदि परियोजनाएँ सभी एक ही स्थान पर रहती हैं, तो स्क्रिप्ट को किसी प्रोजेक्ट का नाम देना पड़ सकता है। आप अभी भी गलत प्रोजेक्ट को हटा सकते हैं, लेकिन पूरे सिस्टम को नष्ट नहीं कर सकते।
लोरेन रोसेन

... यह भी, chrootडॉकियर की तरह कुछ का उपयोग करने का एक संस्करण होगा (जो मुझे लगता है कि वास्तव chrootमें कवर के तहत उपयोग करता है )। अन्य फ़ाइलों के लिए आपको केवल पढ़ने की आवश्यकता है, केवल-पढ़ने के लिए फ़ाइल-सिस्टम माउंट करें।
लोरेन रोसेन

3

rmएक बहुत पुराना यूनिक्स कमांड है और संभवत: उपयोगकर्ता-मित्रता को ध्यान में रखकर नहीं बनाया गया है। यह ठीक उसी तरह से करने की कोशिश करता है, जब इसकी अनुमति हो, जब इसकी अनुमति हो। कई नए उपयोगकर्ताओं के लिए एक नुकसान यह है कि वे अक्सर कोड को देखते हैं sudoऔर इसका उपयोग करने के बारे में ज्यादा नहीं सोचते हैं। कार्य कि सीधे तरह फ़ाइलों को संशोधित rm, dd, chroot, आदि उपयोग में अत्यधिक ध्यान की आवश्यकता है।

आजकल मुझे कूड़ेदानtrash से (बिना सूद के) उपयोग करना पसंद है । यह विंडोज से रीसायकल बिन की तरह कार्य करता है, जिसमें आप गलती से हटाए गए फ़ाइलों को आसानी से प्राप्त कर सकते हैं। उबंटू में पहले से ही एक ट्रैश फोल्डर है और फाइल में मूव-टू-ट्रैश फंक्शनलिटी है।

फिर भी आप गलतियाँ कर सकते हैं इसलिए अपने पूरे फाइल सिस्टम का बैकअप बनाना सुनिश्चित करें।

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