मैं "\" नामक फ़ाइल या निर्देशिका को कैसे निकाल सकता हूं?


20

मैं एक उबंटू मशीन पर टर्मिनल का उपयोग कर रहा हूं और एक फाइल है जिसे मैं हटाना चाहूंगा। फ़ाइल का नाम है \(सिर्फ एक बैकस्लैश)।

अब आमतौर पर मैं बस करता

rm filename

हालांकि अगर मैं ऐसा करता हूं rm \तो यह सोचता है कि मैं एक बहु-पंक्ति कमांड लिखने की कोशिश कर रहा हूं।

मैं इस फ़ाइल को कैसे हटा सकता हूं? मुझे पता है कि मैं बस GUI फ़ाइल सिस्टम का उपयोग कर सकता था, लेकिन यह बहुत कुशल नहीं है।

तो, मैं (टर्मिनल में) नामक फ़ाइल को कैसे हटा सकता हूं \?


1
आपके पास एक फ़ाइल क्यों है जिसका नाम है? (यह मुझे codeइस टिप्पणी में यहाँ एक ब्लॉक में भी नहीं डालने देता !)
AJMansfield

7
यदि मैं सही तरीके से याद करता हूं तो अधिक मज़ा <BEL>, उर्फ़ Ctrl-G नामक फ़ाइल को हटाने की कोशिश कर रहा है। हर बार एक ऐसा ls आप पर कुंजीपटल बीप आप (क) जब तक की खोज की अदृश्य फ़ाइल; और (b) यह निर्धारित करता है कि किसी फ़ाइल को उसके नाम के केवल एक अप्राप्य चरित्र से कैसे हटाया जाए।
पीटर गेकर्न्स

1
इससे भी महत्वपूर्ण बात, आप "/" नामक फ़ाइल को कैसे हटाते हैं?
कर्ट

1
@ कर्ट fsck। गंभीरता से। यदि कोई फ़ाइल नाम /मौजूद है, तो आपका फ़ाइल सिस्टम दूषित है।
zwol

2
मुझे हमेशा *अपने नाम की फ़ाइल पसंद थी ...
RBerteig

जवाबों:


48

उपयोग करें rm \\(एक और बैकस्लैश के साथ बैकस्लैश से बचें)। ध्यान दें कि यह समान निर्देशिकाओं के लिए भी काम करता है, नामांकित \(या तो rmdir, या ध्वज के rmसाथ -r)।

उदाहरण:

> mkdir डेमो
> सीडी डेमो
> स्पर्श करें \\
> एलएस -एल
कुल ०
-rw ------- 1 हेनेज़ उपयोगकर्ता 0 जुलाई 29 20:25 \
> rm \\
> एलएस -एल
कुल ०

3
या, एक ही सिद्धांत के तहत, rm '\'(लेकिन नहीं rm "\" )।
ईविल 30p13

2
@evilsoup उस पर कुछ अतिरिक्त स्पष्टीकरण प्रदान करने के लिए, \ चरित्र का उपयोग डबल-कोट सीमांकित तारों में एक भागने चरित्र के रूप में किया जाता है। कहने rm "\"को एक अयोग्य स्ट्रिंग में पार्स किया जाएगा, क्योंकि एक भागने चरित्र के साथ दूसरे उद्धरण चिह्न का उपयोग किया जाता है (और इस तरह डबल-क्वैटर वर्ण के रूप में पार्स किया जाएगा, और स्ट्रिंग का अंत नहीं होगा)। इस प्रकार, टर्मिनल तब तक इंतजार करेगा जब तक आप स्ट्रिंग को दूसरे के साथ समाप्त नहीं करेंगे "। यहाँ दोहरे उद्धरण चिह्नों का उपयोग करने की समतुल्य विधि rm "\\"(जो कि दोनों के बराबर है rm '\'और rm \\ जैसा कि आपने पहले ही पुष्टि की है)।
ब्रेकथ्रू

15

मैन्युअल रूप से अपने नाम में अजीब पात्रों के साथ फ़ाइलों को हटाने के लिए एक सामान्य रणनीति है

rm -i ./*

यह आपको निर्देशिका में प्रत्येक फ़ाइल को हटाने या न चुनने के लिए संकेत देगा।


3
या, एकल यह एक एकल चार था। rm -i ./?
हेन्नेस

1
हाँ। यदि आप ./* से अधिक विशिष्ट ग्लोब लिख सकते हैं, तो यह हमेशा एक अच्छा विचार है, खासकर जब कुछ विनाशकारी हो।
zwol

4
+1 आपके ग्लोब के साथ ./
प्रीफ़्लुएंट

12

आप किसी फ़ाइल के इनकोड को संदर्भित करके भी अनलिंक कर सकते हैं

linus ~/test $ touch \\
linus ~/test $ ls -li
total 0
15204561 -rw-r--r-- 1 pat sudo 0 Jul 29 23:03 \
linus ~/test $ find . -inum 15204561 -exec rm -v {} \;
removed `./\\'
linus ~/test $ ls -li
total 0
linus ~/test $ 

0

कृपया पहले फ़ाइल के इनकोड की जाँच करें। ls -li

137791 -आरडब्ल्यू-आरडब्ल्यू-आर--। 1 svr svr 366 Mar 11 15:57

"\" का इनोड "137791 है और फिर इनकोड संख्या के साथ" \ "को हटाने के लिए कमांड ढूंढें।

खोजो। -inum 137791 -exec rm -i {} \;

rm: नियमित फ़ाइल हटाएं './ \'? हाँ

"" तब हटा दिया जाएगा।

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