टर्मिनल कमांड में `>>` का क्या अर्थ है?


14

मैं अभी नीचे दिए गए एक कमांड पर आया हूं -

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

मैं क्या अनुमान लगा सकता हूं, इसका उपयोग संभवतः .bash_profile में परिवर्तनों को करने के लिए किया जाता है, लेकिन वास्तव में इसका उपयोग किस लिए किया जाता है?


26
बस आपको यह बताने के लिए कि भविष्य में क्या सुधार करना है: man bashकाफी औपचारिक भाषा के साथ लिखा गया है, इसे समझना मुश्किल हो सकता है। दूसरी ओर वाक्यांश bash >>Google में कुछ उपयोगी लिंक देता है। यह सही है कि हम Google पर निर्भर हुए बिना ज्ञान को एकत्रित करना चाहते हैं; इस कारण भी आसानी से खोजा जा सकने वाला उत्तर फिट हो सकता है। हालांकि तथ्य यह है कि आपने न तो तुरंत उत्तर प्रदान किया है (देखें कि क्या मैं अपने स्वयं के प्रश्न का उत्तर दे सकता हूं? ) और न ही मौजूदा संसाधनों की ओर इशारा किया (जो कि संभवतः आपको समझने में मदद की आवश्यकता है) शोध की कमी को इंगित करता है।
कामिल मैकियोरोस्की

5
कमांड-लाइन पुनर्निर्देशन ऑपरेटरों के विस्तृत अवलोकन के लिए, unix.stackexchange.com/q/159513/85039
Sergiy Kolodyazhnyy

जवाबों:


31

यह पहले प्रोग्राम के स्टडआउट को रीडायरेक्ट करता है >>और बाद में दिए गए फ़ाइल में जोड़ देता है।


28
"कार्यक्रम से पहले" इसका क्या मतलब है? स्पष्ट रूप से आज्ञा दें, लेकिन पुनर्निर्देशन को पहले से लिखा जा सकता है, अर्थात>> file command
rexkogitans

एक उदाहरण। उबंटू 18.04 पर मैं "उपयुक्त खोज रस्ट >> x" टाइप कर सकता हूं। "ऐप्ट सर्च रस्ट" भाग, जंग रोधी के लिए उपलब्ध पैकेज खोजता है और फिर इसे स्टैंडर्ड आउट (सामान्य रूप से इस मामले में टर्मिनल) के लिए भेजता है। हालाँकि ">> x" आउटपुट को फ़ाइल "x" के अंत में पुनर्निर्देशित करने के लिए कहता है। अगर मैं फ़ाइल को बदलना चाहता था, तो मुझे केवल ">" की आवश्यकता होगी।
खानाबदोश

@rexkogitans यदि आप अपने कोड को पढ़ने के लिए भ्रमित करना चाहते हैं, तो कमांड के बीच में भी। नाम की फ़ाइल में echo a b >> c dसंलग्न होगा । a b dc
कैस्परल्ड

@kasperd आप किसी भी क्रम में, इसके अलावा बीच में स्टड पुनर्निर्देशन भी बिखेर सकते हैं।
rexkogitans

48

संक्षिप्त उत्तर - क्या करता >>है?

के साथ >>, आप किसी फ़ाइल में कमांड के आउटपुट को जोड़ते हैं।

आपके उदाहरण कमांड में कई भाग होते हैं, मूल रूप से:

कमांड >> फ़ाइल नाम

तो उत्पादन के commandलिए संलग्न किया जाएगा filename


के विशिष्ट मामले में क्या होता है echo?

आपके विशिष्ट मामले में, echo "…"कमांड इसके इनपुट तर्कों को "stdout" के लिए आउटपुट करता है, जो तथाकथित "मानक आउटपुट डिस्क्रिप्टर" है। इनपुट तर्कों का echoपालन ​​एक नई लाइन ( \n) द्वारा किया जाता है , ताकि आपको एक लाइन ब्रेक मिले।

यहां, "मानक आउटपुट डिस्क्रिप्टर" एक आउटपुट स्ट्रीम से अधिक कुछ नहीं है जो आपके शेल में दिखाया गया है जब आप एक कमांड निष्पादित करते हैं। (जब आप echo fooदर्ज करते हैं और हिट करते हैं, तो कमांड foo\nका वास्तविक आउटपुट echoहोता है, जिसे आपके शेल fooद्वारा एक नई रूपरेखा के बाद दिखाया जाता है ।)

मूल रूप से कुछ भी जो आपकी कमांड लाइन को लिखता है, स्टडआउट का उपयोग कर रहा है। एक अन्य विवरणक भी है जिसे "stderr" कहा जाता है जो आमतौर पर त्रुटि संदेशों के लिए उपयोग किया जाता है। इसे स्टैडआउट की तरह भी मुद्रित किया जाएगा, इसलिए कभी-कभी उन्हें काट दिया जा सकता है। और एक स्टड डिस्क्रिप्टर है जो इनपुट के लिए उपयोग किया जाता है। अधिक जानकारी के लिए यह लेख देखें ।

आप शेल में आउटपुट को रीडायरेक्ट कैसे करते हैं?

आप हमेशा फ़ाइल डिस्क्रिप्टर के लिए स्टडआउट को पुनर्निर्देशित कर सकते हैं, जिसे आप इनमें से किसी एक ऑपरेटर के साथ कर सकते हैं:

  • >फ़ाइल डिस्क्रिप्टर पर रीडायरेक्ट करता है। यह फ़ाइल बनाता है यदि यह मौजूद नहीं है, या, यदि यह पहले से मौजूद है, तो लिखने से पहले फ़ाइल को काट देता है। इसलिए फ़ाइल को stdout के साथ अधिलेखित कर दिया जाएगा।

  • >>एक फाइल डिस्क्रिप्टर में जाता है। यह फ़ाइल बनाता है अगर यह मौजूद नहीं है।

आप भी 2>या 2>>इसी तरह का उपयोग करके stderr पुनर्निर्देशित कर सकते हैं । या आप stderr और stdout को एक फ़ाइल में जोड़ सकते हैं: 2>&1ऐसा करता है। पुनर्निर्देशन और कुछ और उदाहरणों के बारे में अधिक जानकारी के लिए, आप इस छोटे ट्यूटोरियल को पढ़ सकते हैं ।

मैं यह कैसे पता लगा सकता हूं कि शेल कोड का एक विशेष टुकड़ा क्या है?

आम तौर पर, आप Askhell.com की कोशिश करना चाह सकते हैं , जो आपको एक विशेष शेल कमांड के बारे में दृश्य मार्गदर्शन और जानकारी देगा।


7

TLDR के लिए जो लोग सिर्फ एक उदाहरण देखना पसंद करते हैं;

>> से पहले कमांड का मानक आउटपुट (त्रुटियां नहीं) उसके नाम वाली फ़ाइल के अंत में जुड़ जाएगा।

तो अगर फ़ाइल में "flintstones.txt" शामिल है;

Fred
Barney

echo Dino >> flintstones.txt फ़ाइल के अंत में 'डिनो' जोड़ा जाएगा;

Fred
Barney
Dino

मैं आपको इसकी एक मिसाल जोड़ने की सलाह echo Dino > flintstones.txtदूंगा कि इसकी सामग्री को केवल Dinoएक ही सही तीर के साथ किया जाए।
जेकगोल्ड

-2

फिर, अगर तुम करते हो

> somefile.txt

फाइल का पूरा कंटेंट क्लियर हो जाएगा।


आप अन्य उत्तर की नकल क्यों कर रहे हैं?
टोटो

@ तो मुझे नहीं लगता कि वह ऐसा करता है। यह आदतन, और बहुत मूल्यवान प्रतीत होता है।
वोल्कर सिएगल

@ टोटो उफ़! करीब से देखना, वास्तव में ऐसा नहीं है। कई पहलुओं में गलत भी। अजीब - वह यहां नया है, लेकिन कहीं और सक्रिय है - इसलिए शायद सिर्फ ट्रोलिंग नहीं।
वोल्कर सिएगल

2
@VolkerSiegel: > fileफ़ाइल को साफ़ करता है लेकिन >> fileकुछ भी नहीं करता है।
टोटो

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