मैं सोच रहा था कि झंडे के रूप में एक फाइल कैसे बनाऊं, उदाहरण के लिए, अगर मैं नाम का फोल्डर बनाना चाहता हूं, तो -a
कमांड क्या करेगा?
मैंने कोशिश की mkdir '-a'
, mkdir \-a
और न ही काम किया। मैं उबंटू पर हूं।
मैं सोच रहा था कि झंडे के रूप में एक फाइल कैसे बनाऊं, उदाहरण के लिए, अगर मैं नाम का फोल्डर बनाना चाहता हूं, तो -a
कमांड क्या करेगा?
मैंने कोशिश की mkdir '-a'
, mkdir \-a
और न ही काम किया। मैं उबंटू पर हूं।
जवाबों:
कमांड को कॉल करें जैसे:
mkdir -- -a
इसका --
मतलब है कि विकल्प उसके बाद समाप्त हो जाते हैं, इसलिए -a
शाब्दिक रूप से व्याख्या की जाती है और विकल्प के रूप में नहीं mkdir
। आपको यह सिंटैक्स न केवल अंदर मिलेगा mkdir
, बल्कि इसके अलावा echo
और किसी भी POSIX- अनुरूप उपयोगिता test
। विनिर्देशन से :
तर्क - विकल्पों के अंत का संकेत देने वाले परिसीमन के रूप में स्वीकार किया जाना चाहिए। किसी भी निम्नलिखित तर्क को ऑपरेंड के रूप में माना जाना चाहिए, भले ही वे '-' चरित्र से शुरू हों। - तर्क का उपयोग विकल्प के रूप में या ऑपरेंड के रूप में नहीं किया जाना चाहिए।
--
सुरक्षा के रूप में उपयोग करने की अनुशंसा लगभग किसी भी कार्रवाई के लिए की जाती है जहाँ आप फ़ाइल नाम के साथ व्यवहार करते हैं और यह सुनिश्चित करना चाहते हैं कि वे कमांड को न तोड़ें, उदाहरण के लिए जब एक लूप में फ़ाइलों को स्थानांतरित करना चाहते हैं, तो आप निम्नलिखित को कॉल कर सकते हैं, ताकि -i
isn नामक फ़ाइल ' विकल्प के रूप में सही ढंग से पार्स किया गया t ((?):
mv -- "$f" new-"$f"
cc -o -myfile -Wall -myfile.c
केवल थोड़े थोड़े वंचित उदाहरण के रूप में लें । इसके नमक के लायक कोई भी संपादक एक फ़ाइल को सहेजने में सक्षम होना चाहिए जिसका नाम -myfile.c
अगर आप उससे पूछते हैं, लेकिन सी कंपाइलर शायद ऐसा नहीं करेगा जब आपको इस तरह के विकल्पों की सूची दी जाए।
cc
कमांड माइकल ने ऊपर दिया था, जिसमें -o
आउटपुट फाइल को निर्दिष्ट करने का विकल्प होता है।
for f in ./*; do...
किfor f in *; do...
किसी भी उचित कार्यक्रम के साथ काम करने का सबसे सरल तरीका यह है कि -
उदाहरण के लिए एक रिश्तेदार पथ नाम का उपयोग किया जाए , जैसे कि वर्तमान कार्यशील निर्देशिका में mkdir ./-a
एक निर्देशिका बनाई जाएगी -a
।
इस "ट्रिक" का उपयोग करने का सबसे आम उदाहरण है जब आप एक फ़ाइल को निकालना चाहते हैं जो डैश के साथ शुरू होती है, तो आप कर सकते हैं rm ./-a
।
./
हमेशा एक अच्छा विचार है - कल्पना करें कि आपने एक फ़ाइल बनाई है जिसे -rf
आपने कॉल किया है और फिर आपने कॉल किया rm *
।
--
हर आज्ञाओं से समझ में नहीं आता है, बस कुछ)
--
यह कोई तोड़-फोड़ वाली बात है, इसलिए इसे सभी कार्यक्रमों के लिए काम करना चाहिए?
ऐसा करने का कारण mkdir '-a'
या mkdir \-a
काम नहीं करता है, क्योंकि इन दोनों तरीकों (उद्धरण या बैकस्लैश का उपयोग करके) का उपयोग आपके शेल (संभावना bash
) को किसी विशेष अर्थ को देने से रोकने के लिए किया जाता है। चूंकि -a
शेल के लिए कुछ भी विशेष मतलब नहीं है, इन पर इसका कोई प्रभाव नहीं है कि यह कैसे पारित हो जाता है mkdir
।
जहां तक mkdir
बात है, यह शेल से तर्कों की एक सूची प्राप्त करता है, और यह नहीं बता सकता है कि आपने उन्हें उद्धरण में रखा है या नहीं, या बैकस्लैश था या नहीं। यह सिर्फ एक तर्क देखता है -a
। इसलिए आपको --
अन्य उत्तरों में बताए अनुसार की आवश्यकता है।
"स्लॉक" के उत्तर के अलावा एक और चाल है जो कभी-कभी काम करती है:
(भिन्न) qoutes जैसे "'-a'"
या के 2 सेट के भीतर प्रश्न में फ़ाइल नाम रखें '"-a"'
।
यह कार्य कार्यक्रम पर निर्भर करता है या नहीं, लेकिन यह एक अंतिम उपाय है यदि प्रोग्राम POSIX --
सुविधा का समर्थन नहीं करता है ।
POSIX विधि हमेशा पसंद की जाती है क्योंकि यह 100% विश्वसनीय है।
--
ऑप्शन को समाप्त करने के लिए प्रोसेसिंग का उपयोग करके यह भी मान लिया जाता है कि आपको फ़ाइल नाम का पालन करने के लिए किसी विकल्प की आवश्यकता नहीं है, जो कि हमेशा ऐसा नहीं होता है।
'-a'
या "-a"
कम से कम बीएसडी-प्रकार सिस्टम पर,