इस वाक्यविन्यास का क्या अर्थ है?


16

मैं टर्मिनल के लिए नया हूं और इसका उपयोग करने का तरीका जानने की कोशिश कर रहा हूं।

ये लाइनें क्या करती हैं? और वे कैसे काम करते हैं?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"

7
$ man date && man echoखोल पर।
code_dredd

जवाबों:


76
$ type echo
echo is a shell builtin

अर्थ, echoकमांड bashप्रोग्राम का ही हिस्सा है (मान लें कि आप बैश का उपयोग करते हैं)

-n एक विकल्प है, तो देखते हैं कि यह क्या करता है

$ help echo
Write arguments to the standard output
...
-n  do not append a newline

इसलिए जब हम लाइन चलाते हैं:

zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$ 

हम्म जो बहुत अच्छे नहीं लगते, क्योंकि मुद्रित पाठ के बाद कोई नई रेखा नहीं है। हम इस पर वापस आएंगे।

$ type date
date is /bin/date

इसलिए dateकमांड एक अलग प्रोग्राम है। यह क्या करता है?

$ man date
Display the current time in the given FORMAT, or set the system date.

dateकमांड के बाद के अक्षर प्रारूप विकल्प हैं (जो पहले से होने चाहिए +) - तिथि के विभिन्न भाग निर्दिष्ट हैं (उदाहरण %Aके लिए सप्ताह के दिन का पूरा नाम - man dateविकल्पों की पूरी सूची के लिए बाकी देखें )

$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017

इसलिए यदि हम एक स्क्रिप्ट में कमांड्स को एक साथ रखते हैं और फिर स्क्रिप्ट को चलाएंगे

Today's date is: Tuesday, February 7, 2017

अच्छा! यदि आप एक टर्मिनल में एक ही प्रभाव चाहते हैं, तो आप एक नई पंक्ति के बजाय दो कमांड को अलग करने के लिए अर्धविराम का उपयोग कर सकते हैं:

$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017

21
यह एक उन्नत RTFM उत्तर है, +1
YSC

1
मैं कहता हूँ कि इस तर्क के पहले प्लस चिन्ह क्या है के लिए एक स्पष्टीकरण याद आ रहा है
डेलीसन जूनियो

@ DélissonJunio ​​ने संपादित किया, लेकिन मेलेबियस का जवाब इसे सीधे आदमी पृष्ठ के साथ बेहतर दिखाता है
Zanna

@ मैं ओपी नहीं हूं, लेकिन मेरी आंख ने जो पकड़ा वह तथ्य था कि प्लस अजीब लगता है क्योंकि मुझे लगता है कि बैश एक तर्क के रूप में उद्धरण के बीच सब कुछ व्याख्या करेगा, प्लस शामिल नहीं है। लेकिन मुझे लगता है कि यह एक और सवाल है
Délisson Junio

2
आप वास्तव में उद्धरण के अंदर प्लस भी डाल सकते हैं। बैश में उद्धृत और आसन्न पाठ को एक साथ चलाने का एक अजीब-सा तरीका है, उदाहरण के लिए सीडी "$ x" / आउटपुट या यहां तक ​​कि सीडी nospace / "स्पेस के साथ" / nospace
StarWeaver

10

आपको मैनुअल पेज, कमांड से शुरू करना चाहिए man। बस man <command>एक के बारे में जानकारी प्राप्त करने के लिए टाइप करें <command>। इसमें नेविगेट करना manबहुत सहज नहीं है, लेकिन इसके बहुत सारे मार्गदर्शक हैं, उदाहरण के लिए https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages

के प्रासंगिक भागों man echoऔर man date:

गूंज

echo [SHORT-OPTION]... [STRING]...

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

तो यह स्ट्रिंग को प्रिंट करता है और उसके बाद नई लाइन पर नहीं जाता है (जो कि डिफ़ॉल्ट व्यवहार है), इसलिए अगले कमांड का आउटपुट इको स्ट्रिंग के दाईं ओर प्रिंट किया जाएगा।

दिनांक

date [OPTION]... [+FORMAT]

FORMAT controls the output.  Interpreted sequences are:

%A     locale's full weekday name (e.g., Sunday)

%B     locale's full month name (e.g., January)

%d     day of month (e.g., 01)

%Y     year

By default, date pads numeric fields with zeroes.  The following optional flags may follow '%':

-      (hyphen) do not pad the field

मुझे उम्मीद है कि यह स्पष्ट है। बेझिझक पूछें कि क्या नहीं।


बहुत बहुत धन्यवाद। मेरे पास एक और सवाल है: क्या टर्मिनल में तारीख दिखाने के लिए पहले से ही एक अंतर्निहित फ़ंक्शन है?
अज्ञात व्यक्ति

@Zanna यह वास्तव में एक नया प्रश्न नहीं है, यह एक प्रश्न से संबंधित है जो मैंने पूछा है।
अज्ञात व्यक्ति

1
@Unognperson यदि आप चाहते हैं कि दिनांक डिफ़ॉल्ट रूप से टर्मिनल में प्रदर्शित हो, तो यह वास्तव में "यह कोड क्या करता है" के लिए एक पूरी तरह से अलग सवाल है, क्योंकि आपको PS1 चर को संपादित करने की आवश्यकता होगी (या शायद यह टर्मिनल ऐप के साथ किया जा सकता है सेटिंग्स - इसके बारे में मैं अज्ञानी हूं) जो इस पद के दायरे से बाहर है
Zanna

1
@Unknownperson date करता टर्मिनल (कमांड लाइन इंटरफेस) में इस शो की तारीख। यदि आप कुछ और चाहते हैं (जैसे कि ज़ाना क्या सुझाव देता है), तो कृपया एक नया प्रश्न पूछें।
मेलेबियस

4
echo -n "Today's date is: "

यह छपेगा: आज की तारीख है:

date +"%A, %B %-d, %Y"

यह कुछ इस तरह छपेगा: मंगलवार, 7 फरवरी, 2017

सलाह :

  1. किसी अन्य कमांड के बारे में अधिक जानने के लिए उपयोग manया --helpकमांड करें।
    जैसे:

    man echo
    echo --help
  2. कोशिश करें कि ये चुनौतियाँ वास्तव में टर्मिनल पर चीजों को सीखने में आपकी मदद करने के लिए बहुत अच्छी हैं।

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