सवाल यूनिक्स टूल्स: क्या होगा यदि किसी फ़ाइल को शून्य से नाम दिया गया हो?


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

$ 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.

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


9
2018-05-01 14:10


मूल


आपको सिस्टम कॉल में सचमुच स्ट्रिंग "-f" को पारित करने का एक तरीका ढूंढना होगा। आम तौर पर यह सावधानी से बचने से है। - Flexo
'करीबी क्योंकि ऑफ-विषय' मतदाता के लिए: यह खोल के बारे में एक सवाल है प्रोग्रामिंग और एक समस्या से कैसे बचें। यह SO के लिए पूरी तरह से विषय है। (ओटीओएच, यह शायद एक डुप्लिकेट है; समस्या प्रासंगिक अन्य प्रश्न ढूंढ रही है।) - Jonathan Leffler
के संभावित डुप्लिकेट मैं बैश से "-p" नाम की फ़ाइल को कैसे हटा सकता हूं? - grawity


जवाब:


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


11
2018-05-01 14:11





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

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

9
2018-05-01 14:11





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

$ 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

6
2018-05-01 15:05





आपको उपयोग करना है

  rm -- <filename>

उदाहरण के लिए:

  rm -- -f

4
2018-05-01 14:13



कुछ टिप्पणी गलत नहीं होगी। - user unknown