संरक्षित फ़ाइल निकालते समय कई बार "y" जारी करने की आवश्यकता से कैसे बचें


52

मैं "rm: हटाने के लिए नियमित फ़ाइल [x]?"

मैं एक चरित्र को जारी करने के बारे में सोच रहा था, जिसके बाद कई बार बैशकेन में गाड़ी की वापसी हुई। हम यह कैसे करे?


आप एक फ़ंक्शन को परिभाषित कर सकते हैं। यह थ्रेड आपकी मदद कर सकता है: stackoverflow.com/questions/756756/…
अल्परट

तुम ऐसा क्यों करना चाहते हो? किसी भी मामले में, और।
l0b0

@ l0b0 प्रश्न अधिक विशिष्ट होने के लिए संपादित
Iancovici

आप .bashrc में फ़ाइलें क्यों निकालना चाहेंगे? मूल कार्य अभी भी स्पष्ट नहीं है।
l0b0

3
@echadromani SO / SE पर मूल समस्या को समझने के लिए एक इष्टतम समाधान प्रदान करने की कोशिश करना बहुत आम है जो अन्य स्थितियों के लिए लागू हो सकता है।
l0b0

जवाबों:


75

अद्यतन प्रश्न के आधार पर संपादित करें:

फ़ाइलों को हटाने के बारे में पूछे जाने से बचने के लिए, -f("बल") विकल्प जोड़ें:

rm -f /path/to/file

इसका एक साइड इफेक्ट है जो आपको पता होना चाहिए: यदि दिए गए रास्तों में से कोई भी मौजूद नहीं है, तो यह रिपोर्ट नहीं करेगा , और यह सफलतापूर्वक वापस आ जाएगा:

$ rm -f /nonexistent/path
$ echo $?
0

मूल उत्तर:

यहाँ एक सरल उपाय है:

yes "$string" | head -n $number | tr $'\n' $'\r'

yesकिसी भी स्ट्रिंग को दोहराता है, जिसे आप असीम रूप से देते हैं, जिसे न्यूलाइन्स द्वारा अलग किया जाता है। समय के headबाद इसे रोक देता है $number, और trगाड़ी की वापसी के लिए नई लाइनों का अनुवाद करता है। हो सकता है कि आपको गाड़ी के रिटर्न के कारण कोई आउटपुट न दिखाई दे, लेकिन इसे इस कमांड में भेजना (इसमें bash) इसे स्पष्ट करना चाहिए:

printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"

बिना bashउपयोग किए उपयोगकर्ता परिणाम को वापस कर सकते हैं od, hexdumpया xxdवास्तविक वर्णों को वापस देख सकते हैं।


7

मैंने समय-समय पर जो दूसरा मुद्दा चलाया है, वह rmयह है कि rm -iकुछ इस तरह से / etc / bashrc में है:

alias rm='rm -i'

उस स्थिति में unalias rmया तो आप इस ट्रिक का उपयोग कर सकते हैं, जो मुझे सालों पहले पता चला था, एक उपनाम के सामने एक बैकस्लैश रखा था, जो उर्फ ​​को अनदेखा करने के लिए सिर्फ एक बार, उदाहरण के लिए:

\rm somefile

आप निक्सन के एक लेख के माध्यम से उपनामों के बारे में अधिक जान सकते हैं ।


5

rmलिखना सुरक्षित फ़ाइलों पर "अंतःक्रियात्मक" (उपयोगकर्ता इनपुट के लिए शीघ्र प्रतीक्षा) पूछने के लिए हार्डकोड है। rmपूछने से रोकने के दो तरीके हैं :

rm -rf somedir

तथा

rm -r --interactive=never somedir

(दोनों -rडायरियों के बजाय फाइल डिलीट किए बिना भी काम करते हैं )

स्पष्टीकरण:

-fबनाता है rm"अस्तित्वहीन फ़ाइलें और तर्कों की अनदेखी, कभी नहीं का संकेत करने के लिए"।

--interactive=neverयह क्या कहता है: इंटरैक्टिव कभी नहीं। दूसरे शब्दों में: कभी संकेत नहीं।

के बीच का अंतर -fऔर --interactive=never"अस्तित्वहीन फ़ाइलें और तर्कों पर ध्यान न दें": इस हिस्सा है।

तुलना:

$ rm -rf nonexistingname
$ echo $?
0

तथा

$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1

अंतर मुख्य रूप से स्क्रिप्ट लिखते समय दिलचस्प है जहां आप कभी rmभी इंटरएक्टिव नहीं होना चाहते हैं, लेकिन फिर भी त्रुटियों को संभालना चाहते हैं।

सारांश: कमांड लाइन के उपयोग पर rm -rf। लिपियों में उपयोग करते हैं rm -r --interactive=never


उक्त प्रश्न के उत्तर के लिए ("संरक्षित फ़ाइल निकालते समय कई बार" y "जारी करने की आवश्यकता से कैसे बचें") https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line देखें / 338,860 # 338,860


1

बस अपने सभी आदेशों के लिए हाँ!

yes | rm -r /path/
yes | <command>

वैसे भी आप हमेशा उपयोग कर सकते हैं -f:

rm -r -f /path

-2

मैं भी उसी मुद्दे पर भाग गया। उपरोक्त उत्तर सिर्फ एक फ़ाइल के लिए है, लेकिन यदि आप बहुत सारी हाँ को अनदेखा करना चाहते हैं।

आप उपयोग कर सकते हैं

sudo rm -r /path/to/directory

सभी को हटाने के लिए संरक्षित नियमित फ़ाइल लिखें


इसे डाउनवोट किया जा रहा है क्योंकि यह पूरी निर्देशिका को हटा देता है। संभवत: ओपी केवल प्रश्न को फ़ाइल में निकालना चाहता है, न कि एक ही निर्देशिका उपशीर्षक में हर एक फ़ाइल।
जेक

अरे .... हो सकता है आप सही हों।
गोपाल प्रसाद

अरे .... हो सकता है आप सही हों। लेकिन इस मामले में नहीं .. जैसा कि यदि किसी उपयोगकर्ता के पास बहुत धैर्य और समय है, तो उसके पास कई बार 'हां' देने का समय भी है ... मैंने मान लिया है कि वह एक आदेश के साथ सभी फ़ाइल को निकालना चाहता है .. जैसा कि आप लिखते हैं। संरक्षित फ़ाइल हमेशा इस प्रकार की फ़ाइल को हटाने से पहले पुष्टिकरण के लिए पूछती है .. ऐसा ही एक उदाहरण उस स्थिति में है जब आप virtualenv बनाते हैं और बाद में आप अजगर में हटाना चाहते हैं .. कृपया इसे आज़माएं और आप rm कमांड को पुष्टिकरण और हर बार पूछेंगे। आपको एक उत्तर देना होगा .. मैंने इस तरह से स्थिति को हल किया है।
गोपाल प्रसाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.