मैं सोच रहा था कि झंडे के रूप में एक फाइल कैसे बनाऊं, उदाहरण के लिए, अगर मैं नाम का फोल्डर बनाना चाहता हूं, तो -aकमांड क्या करेगा?
मैंने कोशिश की mkdir '-a', mkdir \-aऔर न ही काम किया। मैं उबंटू पर हूं।
मैं सोच रहा था कि झंडे के रूप में एक फाइल कैसे बनाऊं, उदाहरण के लिए, अगर मैं नाम का फोल्डर बनाना चाहता हूं, तो -aकमांड क्या करेगा?
मैंने कोशिश की mkdir '-a', mkdir \-aऔर न ही काम किया। मैं उबंटू पर हूं।
जवाबों:
कमांड को कॉल करें जैसे:
mkdir -- -a
इसका --मतलब है कि विकल्प उसके बाद समाप्त हो जाते हैं, इसलिए -aशाब्दिक रूप से व्याख्या की जाती है और विकल्प के रूप में नहीं mkdir। आपको यह सिंटैक्स न केवल अंदर मिलेगा mkdir, बल्कि इसके अलावा echoऔर किसी भी POSIX- अनुरूप उपयोगिता test। विनिर्देशन से :
तर्क - विकल्पों के अंत का संकेत देने वाले परिसीमन के रूप में स्वीकार किया जाना चाहिए। किसी भी निम्नलिखित तर्क को ऑपरेंड के रूप में माना जाना चाहिए, भले ही वे '-' चरित्र से शुरू हों। - तर्क का उपयोग विकल्प के रूप में या ऑपरेंड के रूप में नहीं किया जाना चाहिए।
--सुरक्षा के रूप में उपयोग करने की अनुशंसा लगभग किसी भी कार्रवाई के लिए की जाती है जहाँ आप फ़ाइल नाम के साथ व्यवहार करते हैं और यह सुनिश्चित करना चाहते हैं कि वे कमांड को न तोड़ें, उदाहरण के लिए जब एक लूप में फ़ाइलों को स्थानांतरित करना चाहते हैं, तो आप निम्नलिखित को कॉल कर सकते हैं, ताकि -iisn नामक फ़ाइल ' विकल्प के रूप में सही ढंग से पार्स किया गया 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"कम से कम बीएसडी-प्रकार सिस्टम पर,