यूनिक्स उपकरण: यदि किसी फ़ाइल का नाम माइनस कुछ है तो क्या होगा?


9

मैं हमेशा सोच रहा हूं: अधिकांश जीएनयू / यूनिक्स उपकरण "शून्य से कुछ" के रूप में विकल्प लेते हैं, कभी-कभी एक तर्क के बाद। अगर आपको किसी चीज के नाम से फाइल मिली है तो क्या होगा?

$ ls
-f
$ rm -f
$ ls
-f
$ mv -f abc
mv: missing destination file operand after `abc'
Try `mv --help' for more information.
$ cat -f
cat: invalid option -- 'f'
Try `cat --help' for more information.

या

$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.

यह सिर्फ जिज्ञासा से बाहर है; मेरे पास इसके लिए उपयोग का मामला नहीं है।


आपको सिस्टम कॉल को सचमुच "स्ट्रिंग -f" पास करने का एक तरीका खोजना होगा। आम तौर पर यह सावधान भागने से है।
फ्लेक्सो

2
मतदाता 'ऑफ-टॉपिक' के कारण: यह शेल प्रोग्रामिंग के बारे में एक सवाल है और समस्या से कैसे बचा जाए। यह पूरी तरह से एसओ के लिए विषय है। (ओटीओएच, यह शायद एक डुप्लिकेट है; समस्या प्रासंगिक अन्य प्रश्न का पता लगा रही है।)
जोनाथन लेफ़लर

जवाबों:


12

नाम वाली फ़ाइल को निकालने के लिए -x, rm -- -x( --विकल्पों के अंत का मतलब है) या rm ./-x


10

साक्षात्कार सेटिंग्स में इस प्रकार का प्रश्न पूछना काफी सामान्य है। डैश के साथ फ़ाइलों को संभालने का एक सामान्य तरीका है:

$ rm -- -f
$ rm ./-f

6

यूनिक्स में एक आम सवाल। मुख्य तरीका फ़ाइल को पूर्ण पथ नाम देना है, इसलिए इसके सामने डैश नहीं है:

$ rm -file.txt
unknown option -l

$ rm ./-file.txt    #No problem!
$ rm $PWD/-file.txt #Same thing

कुछ कमांड, आप विकल्पों को समाप्त करने के लिए स्वयं (या डबल डैश) द्वारा डैश का उपयोग कर सकते हैं। हालाँकि, यह जरूरी नहीं है कि सभी कमांड्स के साथ, या अलग-अलग सिस्टम पर एक ही कमांड के साथ हो।

$ rm -- -file.txt   #Works on Linux but not on some Unix systems

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