कमांड लाइन विकल्पों के लिए छोटे और लंबे विकल्प क्यों हैं?


23

अधिकांश unixoid आदेशों कमांड लाइन विकल्प, जैसे के लिए छोटी और लंबी विकल्प की सुविधा ls -aऔर ls --all, या ls -Aऔर ls --almost-all। वे दो तरीके क्यों मौजूद हैं? एक टाइप करने के लिए छोटा है, दूसरा पढ़ने और समझने में आसान है। लेकिन हर बार जब मैं एक शेल स्क्रिप्ट लिखता हूं, तो मुझे यह तय करना होगा कि मैं किसका उपयोग करना चाहता हूं। क्या यह ज्ञात है कि दो विकल्प क्यों मौजूद हैं? पहला कौन सा था, दूसरा क्यों पेश किया गया था। उदाहरण के लिए डॉस / विंडोज पर लगभग केवल असंवेदनशील एक-अक्षर विकल्प हैं।

जवाबों:


24

मूल रूप से केवल एकल-वर्ण विकल्प थे। कुछ कार्यक्रमों ने कई-चरित्र विकल्प लिए, लेकिन फिर भी एकल डैश के साथ। AFAIK डबल-डैश कई-वर्ण विकल्प GNU से आते हैं ; उन्हें पेश किया गया था क्योंकि वे अधिक पठनीय और अक्सर अधिक यादगार होते हैं (और आप उनमें से 52 से अधिक हो सकते हैं)। कई कार्यक्रमों में अब दोनों हैं: जब आप कमांड लाइन पर टाइप कर रहे हों, तो छोटे विकल्प और वर्ण याद रखें, स्क्रिप्ट के लिए लंबे विकल्प या कमांड लाइन पर अगर आपको केवल लंबा विकल्प नाम याद है।


15
+1 यह उल्लेख करने के लिए कि स्क्रिप्ट के लिए लंबे विकल्प बेहतर हैं, क्योंकि वे दस्तावेज़ चीजों में मदद करते हैं
नॉर्मन ग्रे

5
"उनमें से केवल 52" के लिए: प्रयास करें ls -BartSimpsonIsJustCool(या Greatयदि आप सोलारिस पर हैं।
हारून डिगुल्ला

1
@AaronDigulla क्या यह ईस्टर अंडा है?
user712092

5
@ user712092 नहीं, यह एक ट्रिक है। लिनक्स के तहत, विकल्प Iके तर्क के बाद सब कुछ है -I, इसलिए यह केवल तभी फर्क पड़ता है जब आपके पास sJustCoolवर्तमान निर्देशिका में एक फ़ाइल होती है । -BartSimpsonभाग पुनर्क्रमित किया जा सकता है, सिवाय इसके कि S(तरह आकार से) के बाद रहने के लिए है t(तरह तिथि के अनुसार)। इसके अलावा mकोई प्रभाव नहीं है जब nया oमौजूद हैं। तो कमांड के बराबर है ls -BSainopsr, और अगर मैंने कुछ भी याद नहीं किया है तो आप उसी आउटपुट को प्राप्त करने के लिए एक और पत्र नहीं निकाल सकते हैं और आप इन पत्रों को स्वतंत्र रूप से पुनः व्यवस्थित कर सकते हैं।
गिल्स एसओ-

2
@ गिल्स: वैसे, जितना संभव हो उतना सटीक होने के लिए, 62 अलग-अलग छोटे विकल्प हो सकते हैं (अंकों सहित), 52 नहीं gzip -9 filename। उदाहरण के लिए विचार करें ।
राडोको दिनेव

1

आप अनुमान लगा सकते हैं कि यह स्वाद का मामला है। कमांड लाइन पर टाइप करते समय एक छोटा विकल्प पसंद किया जा सकता है, विशेष रूप से रन-एक-विकल्प (जैसे ls -AL) के मामले में । लंबे विकल्प इरादे को व्यक्त करने में बेहतर हैं, इस प्रकार जब आप पढ़ते हैं तो आपको मैन पेज से परामर्श करने की आवश्यकता नहीं है ls --almost-all --dereference

स्वाभाविक रूप से, जैसा कि आप अनुभव प्राप्त करते हैं, आप सीख सकते हैं कि दोनों -Aऔर -Lछोटे विकल्प पर्याप्त रूप से प्रसिद्ध हैं, और इस अतिरिक्त दस्तावेज की आवश्यकता नहीं है। विशेष रूप से एक जटिल कमांड में, जो मूल्यांकन, पुनर्निर्देशन, आदि के साथ दिलचस्प तरीकों से कई कमांड को जोड़ सकता है। ऐसे मामले में आप प्रलेखन पर संक्षिप्तता पसंद कर सकते हैं।


1

एक अन्य उद्देश्य जो मैं पैरामीटर (लघु और लंबी) निर्दिष्ट करने के विभिन्न तरीकों को देख सकता हूं, वह यह है कि टाइप करते समय, यूनिक्स / लिनक्स कमांड-लाइन के लोग कम से कम संभव कमांड को पसंद करते हैं। हालाँकि, वे गूढ़ बन सकते हैं, और यदि उन छोटे संस्करणों का उपयोग करके एक स्क्रिप्ट लिखी जाती है, तो वे सड़क को समझना मुश्किल हो सकते हैं। लंबे संस्करण का उपयोग करके SAME कमांड को किसी ऐसे व्यक्ति द्वारा अधिक पठनीय और समझने योग्य बनाया जा सकता है, जो इस कमांड का गुरु नहीं है, खासकर यदि यह कमांड वास्तव में एक प्रसिद्ध कमांड के विपरीत एक स्थानीय रूप से लिखित स्क्रिप्ट है।

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