कमांड लाइन शब्दावली: कमांड के इन भागों को क्या कहा जाता है?


21

कमांड लाइन पर मैं अक्सर "सरल" कमांड का उपयोग करता हूं जैसे

mv foo/bar baz/bar

लेकिन मुझे नहीं पता कि इसके सभी हिस्सों को क्या कहा जाए:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

मुझे लगता है कि मुझे पता है कि 1 एक कमांड है और 2 एक तर्क है, और मैं शायद 3 को एक तर्क सूची कहूंगा (क्या यह सही है?)।

हालाँकि, मुझे नहीं पता कि 4 को क्या कॉल करना है ।

अधिक जटिल "कमांड" कैसे लेबल किए जाते हैं?

find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2' {} {/}

मैं एक उत्तर की सराहना करता हूं जो 1,2,3,4 को कॉल करने के लिए टूट जाता है और ऊपर के इस "कमांड" जैसे प्रत्येक भाग को क्या कहते हैं।

यह अन्य चीजों के बारे में भी सीखना बहुत अच्छा होगा जो अद्वितीय / आश्चर्यजनक हैं जो मैंने यहां शामिल नहीं किए हैं।


1
आप पर ध्यान दिया है manके लिए पृष्ठों gitऔर findसार खंड, विशेष रूप से?
fpmurphy

4
आप Git के लिए आदमी पृष्ठों पर ध्यान दिया है और यह पाते हैं तो सवाल के साथ कुछ नहीं लगता है gitया findलिनक्स के लिए नहीं बल्कि सामान्य शब्दावली।
आरएच

में बैश आदमी पृष्ठ के अनुसार A | B, A | Bएक है पाइप लाइन , Aऔर Bकर रहे हैं आदेशों (यह दुर्भाग्यपूर्ण है कि यह एक आदेश में सिर्फ पहली दुनिया के रूप में एक ही नाम है)। मैं पहले तर्क को एक निष्पादन योग्य कह सकता हूं लेकिन मुझे ऐसा स्रोत नहीं मिल सकता है जो मुझसे सहमत हो।
Righ

4
के संदर्भ में git checkout ..., checkoutएक उपखंड है , और के संदर्भ में sh -c ..., -cएक विकल्प है
वेजेंड्रिया

@JoL कि बाहर इशारा करने के लिए धन्यवाद। आपने सही अनुमान लगाया, मैंने इसे संपादित किया है। ऐसा इसलिए है क्योंकि मैंने उस अनुभाग को कुछ 4 बार फिर से लिखा है क्योंकि मैंने इसे ठीक से करने की कोशिश की है
Theonlygusti

जवाबों:


33

प्रत्येक भाग के सामान्य नाम इस प्रकार हैं:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘
  1. कमांड नाम (कमांड लाइन का पहला शब्द या टोकन जो पुनर्निर्देशन या चर असाइनमेंट नहीं है और एलियासेस के बाद विस्तारित किया गया है)।

  2. आदेश के लिए टोकन, शब्द, या तर्क। आदमी से मार:

    शब्द: शेल द्वारा एकल इकाई के रूप में माने जाने वाले वर्णों का एक क्रम। एक टोकन के रूप में भी जाना जाता है।

  3. आम तौर पर: तर्क

  4. कमांड लाइन।

के संयोजन दो एक साथ सरल आदेशों |एक पाइप अनुक्रम या पाइप लाइन है:

┌─1┐ ┌──────2──────┐ ┌─2─┐ ┌──2──┐   ┌──1───┐ ┌2┐┌2┐┌2┐┌────2─────┐ ┌2┐ ┌2┐
find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2'  {} {/}
│    └────────────3──────────────┘            └────────────3──────────────┘
└───────────────────────────────────4─────────────────────────────────────┘

मन कि पुनर्निर्देशन और चर कार्य भी हैं:

┌──5──┐ ┌1┐ ┌─2─┐ ┌─2─┐   ┌───6──┐ ┌1┐ ┌─5─┐
<infile tee file1 file2 | LC_ALL=C cat >file
└─────────7───────────┘   └───────7────────┘
└─────────────────────4────────────────────┘

कहां (ऊपर से संख्याओं के बगल में):

  1. पुनर्निर्देशन।
  2. परिवर्तनशील कार्य।
  3. सरल आज्ञा।

यह एक कमांड लाइन हो सकता है सभी तत्व की एक exaustive सूची नहीं है। इस संक्षिप्त उत्तर के लिए ऐसी सूची बहुत जटिल है।


2
POSIX शब्दावली में, जिसे आप पाइप कहते हैं, वह एक पाइप अनुक्रम या पाइपलाइन है (हालांकि एक पाइप लाइन में !इसकी स्थिति को नकारात्मक करने के लिए वैकल्पिक विकल्प हो सकता है )। पाइप ज्यादातर पाइपलाइनों को लागू करने के लिए अधिकांश गोले द्वारा उपयोग किए जाने वाले आईपीसी तंत्र का उल्लेख करेंगे (पाइपलाइनों को पाइप का उपयोग करने की आवश्यकता नहीं है, ksh93 उदाहरण के लिए कुछ सिस्टमों के बजाय सॉकेटेपेयर का उपयोग करता है)। कुछ गोले में अधिक कीवर्ड होते हैं time, noglobजिनका उपयोग !यहां या इसके अलावा किया जा सकता है।
स्टीफन चेज़लस

1
IMHO, इन बातों को तर्क कहा जाता है - और कुछ नहीं तो मुझे लगता है कि इस संदर्भ में टोकन शब्द का अर्थ है "बैश के व्याकरण की परमाणु इकाई"। यहां टोकन शब्द केवल शेल कमांड लाइन के संदर्भ में मौजूद है , न कि प्रोग्राम के निष्पादन के संदर्भ में। यह कहना थोड़ा अजीब होगा "ये प्रोग्राम टोकन हैं" लेकिन शायद यह कहने के लिए कम अजीब है "कमांड लाइन में दूसरा टोकन $ टेस्ट है"। एक अंतर सामने आता है cat $file, यहां मैं कहूंगा कि $fileएक टोकन है, लेकिन फ़ाइल का मूल्य तर्क है।
आरटी

1
@PeterCordes आप सही हैं, <<< "..." एक पुनर्निर्देशन है, एक तर्क नहीं। हालांकि यह अभी भी लाइन का टोकन है। गलतफहमी के लिए खेद है।
इसहाक

1
@TOOGAM वे मानक परिभाषाओं के बिल्कुल विपरीत हैं। कॉलर द्वारा प्रदान की जाने वाली चीजें तर्क हैं; सीएफ "औपचारिक पैरामीटर", या यह SO प्रश्न
माइकल होमर

1
@TOOGAM "मैं जो देख रहा हूं वह पैरामीटर है" । हम्म मुझे लगता है कि तुम सही हो। POSIX कल्पना के अनुसार: "शेल एक फंक्शन (फंक्शन डेफिनिशन कमांड देखें), बिल्ट-इन (स्पेशल बिल्ट-इन यूटिलिटीज देखें), एग्जीक्यूटेबल फाइल या स्क्रिप्ट को क्रियान्वित करता है, जिसमें तर्कों के नाम 1 से n तक गिने जाते हैं। और कमांड का नाम (या एक स्क्रिप्ट के भीतर एक फ़ंक्शन के मामले में, स्क्रिप्ट का नाम) स्थितीय पैरामीटर संख्या 0 के रूप में (कमांड खोज और निष्पादन देखें)। " और मैं इन सभी वर्षों में गलत था ... हालाँकि मेरे बचाव में इसे कहा जाता हैargv
Att Righ

15

@ ऊपर isaac का उत्तर अच्छा लगता है।

मैं कुछ स्रोतों के साथ इसका विस्तार करना चाहता हूं।

मुझे लगता है कि POSIX मानक को कुछ अर्थों में विहित माना जा सकता है । अन्य स्रोत man bashऔर हो सकते हैं man proc

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

POSIX का सुझाव है कि:

  1. है आदेश नाम (न कि आदेश से है, हालांकि यहां तक कि इस दस्तावेज़ का उपयोग करता है स्थानों में कमान)
  2. तर्क
  3. तर्क
  4. कमांड (हालांकि कमांड लाइनman proc का उपयोग करता है )

इसमें कई और जटिल आदेशों की शब्दावली भी है।

मुझे लगता है कि कमांड बहुत अस्पष्ट है इसलिए शायद शब्द का नाम और कमांड लाइन स्पष्टता के लिए अच्छे हैं। जे


क्या खरीद रहा है? मैंने ऐसा कभी नहीं सुना।
Theonlygusti


5
+1 मुझे यह उत्तर सबसे अच्छा लगता है। (इस विशिष्ट संदर्भ में, 2 एक उपखंड है , लेकिन आम तौर पर हाँ, एक तर्क)।
कुबंज़िक

@theonlygusti procएक विशेष उद्देश्य फाइलसिस्टम (फाइलों का संग्रह) है जो कर्नेल की आंतरिक स्थिति के बारे में जानकारी प्रदान करता है। मेरा मानना ​​है कि यह प्रक्रियाओं के लिए खड़ा है (यह भी देखें sysfs जो प्रक्रियाओं की तुलना में दूसरों के बारे में जानकारी प्रदान करता है)। यह प्रासंगिक है कारण कर्नेल डेवलपर्स द्वारा लिखा गया है , इसलिए यह अच्छी तरह से उस भाषा को प्रतिबिंबित कर सकता है जो वे उपयोग करते हैं जो थोड़ा अधिक औपचारिक हो सकता है।
आरएच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.