बिना पूछे फ़ाइल हटा दें


89

यदि मैं फ़ाइल हटाने के लिए सहमत हूं तो मैं उपयोगकर्ता से पूछे बिना फ़ाइल को कैसे हटा सकता हूं? मैं शेल स्क्रिप्ट लिख रहा हूं और rm फ़ंक्शन का उपयोग करता हूं, लेकिन यह पूछता है "नियमित फ़ाइल हटाएं?" और मुझे वास्तव में इसकी आवश्यकता नहीं है। धन्यवाद।


5
rm -f, yes | rmऔर इसी तरह, लेकिन यह एसयू के अंतर्गत आता है।

4
rm"एक नियमित फ़ाइल को हटाएं" नहीं दिखाता है? डिफ़ॉल्ट रूप से संकेत। आपको इसे rm -iएक फ़ंक्शन के रूप में अलियास या परिभाषित किया जाना चाहिए । मुझे आश्चर्य है कि उर्फ ​​आपकी स्क्रिप्ट के अंदर दिखाई दे रहा है। क्या आप स्क्रिप्ट को निष्पादित कर रहे हैं ( ./foo.sh) या इसे सोर्स कर रहे हैं ( . foo.shया source foo.sh)?
कीथ थॉम्पसन

जवाबों:


102

आप हो सकता है rmके लिए उपनामित rm -iतो यह प्रयास करें:

/bin/rm -f file.log

अपने उपनामों को देखने के लिए आप चला सकते हैं alias


7
वैकल्पिक रूप से, उपयोग command rm ...या \rm ...उर्फ / समारोह को छोड़
ग्लेन जैकमैन

6
यह तर्क दिया गया है कि rmअलियास होना rm -iएक बुरा विचार है। rmआदेश डिफ़ॉल्ट रूप से, चुपचाप नामक फ़ाइल निकाल देता है। इसे एलियास करके rm -i, आप एंटर को दबाने से पहले ध्यान से जांच नहीं करने की आदत में पड़ सकते हैं, जो आपको बचाने के लिए इंटरेक्टिव प्रॉम्प्ट पर निर्भर करता है। फिर आप rm some-important-fileबिना उपनाम के वातावरण में टाइप करें ।
कीथ थॉम्पसन

@ कि यह बहुत सच है, मैं केवल व्यक्तिगत रूप से उर्फ ​​आरएम से आरएम -v
चाउट

1
यदि "आरएम" एक फ़ंक्शन (एक उपनाम के बजाय) है, तो यह जवाब काम करना चाहिए। और बैश unsetकमांड दिलचस्प हो सकता है
Xen2050

56

बल ध्वज सभी संकेतों को हटा देता है;

rm -f {file}


2
यह वही है जिसकी मुझे तलाश है, स्वीकृत उत्तर की नहीं।
gasamaras

29

बल आपके साथ हो - rm -f


5
मैंने पहले ही लिन्क के उत्तर को उकेर दिया है, और यह बिल्कुल वैसा ही है। बस हास्य की भावना के लिए
upvoting

मैंने टिप्पणी और उत्तर दोनों को सिर्फ इसलिए उकेरा क्योंकि किसी को वास्तव में SO पर हास्य का भाव मिला ...
Mac

5

शेल स्क्रिप्ट के भीतर, आप उपयोग करना चाहते हैं, rm -f <filename>लेकिन आपके पास अपने शेल (या प्रोफ़ाइल) में -iप्रवेश करके अपने पर्यावरण के लिए निहित विकल्प से छुटकारा पाने का विकल्प भी है unalias rm


5

yesकार्यक्रम बार-बार किसी भी संकेत करने के लिए हाँ उत्तर। तो आप rmवांछित प्रभाव भी प्राप्त करने के लिए इसे इंटरैक्टिव प्रोग्राम में पाइप कर सकते हैं।

yes | rm <filename>

इसके विपरीत, यदि आप कुछ इंटरैक्टिव नहीं करना चाहते हैं, तो आप कर सकते हैं

yes n | <something interactive>

और वह इनपुट स्ट्रीम पर 'एन' दोहराएगा (प्रभावी रूप से सवालों के जवाब नहीं)


yes nविकल्प मेरे लिए काम नहीं कर रहा। जब मैं उपयोग करता हूं yes n | rm file.txt, यह वास्तव में फ़ाइल को हटा देता है, भले ही फ़ाइल सही संरक्षित हो।
.मिलिंड

5

यदि आपके पास फ़ाइल को हटाने के लिए आवश्यक अनुमतियाँ हैं और आप संकेत नहीं करना चाहते हैं, तो निम्न (-f = बल) करें:

rm -f file

यदि आपके पास फ़ाइल की अनुमति नहीं है, तो आपको उपयोग करने की आवश्यकता होगी:

sudo rm -f file

1
"नियमित फ़ाइल निकालें?" शीघ्र का तात्पर्य है कि यह अनुमति की समस्या नहीं है।
कीथ थॉम्पसन

4
\rm file

बैकलैश एलियसेस को \बायपास करता है।


1
"\" एक बैकस्लैश है, जिसका अर्थ है?
कैंड 3 आर

हाँ, ऐसा होता है, बिना एलियास के आरएम का उपयोग करने के लिए अवांछित पुष्टिकरण संवादों के साथ उपसर्ग \ के साथ।
टेकनोपुल

1

-fपैरामीटर का उपयोग करने के अलावा , वैकल्पिक रूप से आप findइसके बजाय कमांड का उपयोग कर सकते हैं , जैसे

find -name file.log -delete

0

वर्तमान में मैं एक सिस्टम पर काम कर रहा हूं, जहां bash शेल ने rm कमांड की परिभाषा को वैश्विक कॉन्फ़िगरेशन फ़ाइलों में से एक में फ़ंक्शन के रूप में प्राप्त किया है:

 rm  () { /bin/rm -i ${1+"$@"}; }

इसलिए, उपनामों के संबंध में उपरोक्त किसी भी उत्तर ने काम नहीं किया। कष्टप्रद व्यवहार का मुकाबला करने के लिए मैं अपने .bashrc फ़ाइल में rm फ़ंक्शन को परेशान करता हूं

 unset -f rm

मुझे तब भी इसी तरह की समस्या थी। हालाँकि मुझे ऐसा कोई उत्तर नहीं मिला जिसने इस संभावना का उल्लेख किया हो कि rmएक शेल फ़ंक्शन द्वारा छिपा हुआ है। इसलिए मैंने इस उत्तर को इस उम्मीद में जोड़ा कि यह किसी प्रकार की समस्या का सामना कर रहे लोगों के लिए मददगार होगा।

टाइपिंग /bin/rmया rm -fहर समय असुविधाजनक है, और इसके बुरे परिणाम (मामले में rm -f) हो सकते हैं।


हो सकता है कि इससे आपकी समस्या हल हो जाए लेकिन यह सवाल का जवाब नहीं देता है।
13

चयनित उत्तर - कॉलिंग /bin/rmकार्य नहीं होगा ? यदि मेरे पास बैश में एक फ़ंक्शन है, और वर्तमान निर्देशिका में उसी नाम के साथ एक निष्पादन योग्य फ़ाइल है, तो बस ./नाम के सामने जोड़कर फ़ाइल को कॉल किया जाएगा - फ़ंक्शन नहीं। PS - मैंने एक समारोह के बारे में चयनित उत्तर के लिए एक टिप्पणी जोड़ीunset
14:20 पर Xen2050

हां, /bin/rmकाम करता है। ऐसा करने से unsetपूरा पथ टाइप के लिए की जरूरत को हटा।
daw

0

यदि आपके rmलिए उपनाम है rm -i, तो उपयोग करें unalias rm;

rm -fसीधे उपयोग न करें जब तक कि आप वास्तव में बहुत सारी संरक्षित-संरक्षित फ़ाइलों को हटाना न चाहें। उपयोग करने के लिए एक बहुत अच्छा कारण होना चाहिए -f

हालाँकि, यदि आपके पास बहुत सारी लिखित-संरक्षित फ़ाइलें हैं, तो आप rsync -r --delete empty/ removed_dir/तेज़ गति के लिए पसंद कर सकते हैं ।


0

ऐसा करने का मेरा पसंदीदा तरीका है command, बस बाश में कमांड का उपयोग करना , जिस तरह से आप उपयोग करते हैं उसी तरह sudo। यह आपके आदेश को बिना उपनाम के चलाएगा, जैसे कि इसे चलाने से /bin/rm(संभवतः के rmरूप में उपनाम दिया गया है rm -i)।

उदाहरण:

command rm -f /tmp/file.txt

0
rm -Rf <folder-to-be-deleted>

-आर: पुनरावर्ती एफ: बल, कोई संकेत नहीं

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