मैं ">" नामक फ़ाइल को कैसे हटा सकता हूं?


22

मैं एक पायथन स्क्रिप्ट चला रहा था जिसमें खराबी थी और जिसका sudoनाम एक फाइल बनाने के लिए इस्तेमाल किया गया था >

मैं इस फ़ाइल से कैसे छुटकारा पा सकता हूं?

बेशक, जब मैं कोशिश करता हूं sudo rm >, मुझे त्रुटि मिलती है bash: syntax error near unexpected token 'newline', क्योंकि यह सोचता है कि मैं के उत्पादन को पुनर्निर्देशित करने की कोशिश कर रहा हूं rm

इसकी अनुमति है -rw-r--r--


10
उत्तर सही हैं, ज़ाहिर है, लेकिन सामान्य तौर पर आप इस पर विचार कर सकते हैं: पहली जगह में फ़ाइल कैसे बनाई गई थी? (बेशक, sudo touch >एक शेल में एक ही त्रुटि होगी।) आपने कहा कि यह पायथन लिपि के साथ था, संभवतः ">"किसी osफ़ंक्शन से गुजरकर बनाया गया था । तो sudo python <<< 'import os; os.remove(">")'बस ठीक काम करना चाहिए।
wchargin

4
इसने मुझे खिड़कियों में एक बग की याद दिला दी जहां आप सचमुच एक निश्चित नाम वाली फ़ाइल को नहीं हटा सकते थे (लेकिन इसे बनाने में कोई समस्या नहीं थी।)
PyRulez

PyRulez ओह, जो?
ऑस्टिन बुर्क

8
विडंबना यह है कि इसका जवाब आपके द्वारा लिखे गए शीर्षक में है।
राफेल

जवाबों:


54

इनमें से कोई भी काम करना चाहिए:

sudo rm \>
sudo rm '>'
sudo rm ">"
sudo find . -name '>' -delete
sudo find . -name '>' -exec rm {} +

ध्यान दें कि अंतिम दो कमांड, जो उपयोग कर रहे हैं find, उन्हें वर्तमान फ़ोल्डर और उसके सभी सबफ़ोल्डर्स में नामित सभी फाइलें या निर्देशिकाएं >मिलेंगी। उससे बचने के लिए, GNU खोज का उपयोग करें:

sudo find . -maxdepth 1 -name '>' -delete
sudo find . -maxdepth 1 -name '>' -exec rm {} +

2
यह संभवतः इंगित करने योग्य है कि findऐसा नहीं है rmक्योंकि यह पुनरावर्ती है और आपके वर्तमान निर्देशिका पेड़ के नीचे नामित हर फ़ाइल को हटा देगा, rmचाहे कितना भी गहरा हो।
jw013

6
@ वराहुल पहले तीन ( rmवेरिएंट) सभी समान हैं। यह शेल से फ़ाइल नाम की सुरक्षा के सिर्फ तीन अलग-अलग तरीके हैं। वास्तव में एक से दूसरे को पसंद करने का कोई कारण नहीं है।
derobert

7
आप सुझाव क्यों देते हैं find(1)? यहाँ एकमात्र समस्या यह है कि एक शेल मेटाचैकर को उद्धृत किया जाना चाहिए। एक मिलियन-और-एक अलग-अलग प्रोग्राम हैं जो एक फ़ाइल को निकाल सकते हैं, लेकिन इसके अलावा किसी भी चीज़ का उपयोग rm(1)करना केवल उत्तर को बाधित करना है।
camh

2
आपको पुनरावृत्ति से बचने के लिए GNU खोजने की आवश्यकता नहीं है। sudo find . ! -name . -prune -name '>' -exec rm {} +
HVD

2
मैं @camh से सहमत हूं, findपूछे गए प्रश्न का उत्तर देने के लिए कुछ भी नहीं जोड़ता है।
पॉल ड्रेपर

18

इसे हटाने के लिए आप पायथन का उपयोग भी कर सकते हैं:

python -c 'import os;os.remove(">")'

POSIX के साथ find:

find . ! -name . -prune -type f -name '>' -exec rm -f {} +

3
क्यों परेशान? शेल >आउटपुट पुनर्निर्देशन के रूप में व्याख्या करने से बचने के लिए बहुत सारे तरीके प्रदान करता है ।
एलेक्सिस

3
@alexis imo इन सरल कार्यों को यथासंभव पूरा करने के कई तरीकों को जानना सबसे अच्छा है। अगर ऑप के पास इस तरह की एक और समस्या है, जो शेल के साथ पूरी तरह से हल करना अधिक कठिन है, तो उनके पास टूलबॉक्स में एक और टूल होगा, इसे एक कोशिश के साथ देने के लिए
भूमिगत

1

मैंने शुरू में जो काम किया था, वह भी समाप्त हो गया:

sudo sh -c "rm \>"

यह निश्चित रूप से, सरल पर एक प्रकार है sudo rm \>


0

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

[Harry@localhost]~% touch ">"
[Harry@localhost]~% cat > ">"
line 1
line 2
[Harry@localhost]~% cat ">"
line 1
line 2
[Harry@localhost]~% ls -l ">"
-rw-r--r-- 1 Harry Harry 14 Jun  5 12:04 >
[Harry@localhost]~% rm ">"
[Harry@localhost]~% ls -l ">"
ls: cannot access >: No such file or directory
[Harry@localhost]~% 

यह पहले से ही टेर्डन के जवाब में है, हालांकि ...
जॉन डब्ल्यूएच स्मिथ

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

0

चरित्र को कोट करें ताकि इसे शेल द्वारा पुनर्निर्देशन के रूप में व्याख्या न किया जाए:

sudo rm '>'

हालांकि, अगर आपके पास अजीब पात्रों के साथ अन्य फाइलें हैं, तो सबसे सुरक्षित तरीका एक GUI फाइल एक्सप्लोरर को खोलना है जैसे कि nautilusऔर इसे वहां हटा दें।

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