">" कमांड का सही नाम क्या है


38

मैं यह जानने की कोशिश कर रहा था कि किसी पाठ को किसी फाइल पर कैसे लिखे बिना ओवरराइटिंग के पास किया जाए जो पहले से ही >कमांड का उपयोग कर रहा है और मुझे एहसास हुआ कि मुझे नहीं पता कि इसे क्या कहा जाता है। सही तीर या दायाँ शेवरॉन या कमांड से अधिक की खोज कुछ भी नहीं दिखा। मैंने हमेशा सिर्फ इसे पास कहा है

जवाबों:


53

>एक कमांड नहीं है, लेकिन एक फ़ाइल विवरणक पुनर्निर्देशन है। इसका मतलब है कि शेल इस असाइनमेंट को पार्स करता है, इसे कमांड लाइन से हटाता है और नई प्रक्रिया के लिए वातावरण को बदलता है जिसमें यह शुरू किया गया है। नई प्रक्रिया कमांड लाइन के इस हिस्से को नोटिस नहीं करती है। यही कारण है कि आप इसे हर जगह डाल सकते हैं: शुरुआत में, अंत में या बीच में।

में REDIRECTIONब्लॉक के लिए देखो man bash

किसी मौजूदा फ़ाइल को संलग्न करने के लिए आपको उपयोग करने की आवश्यकता है >>


यदि विकल्प noclobberसेट किया गया है, तो >|फ़ाइल को क्लोबिंग करने से ओवरराइड और अनुमति देगा।
bsd

30

>एक पुनर्निर्देशन ऑपरेटर है । ध्यान दें कि >एक नियमित फ़ाइल पर रीडायरेक्ट करने के लिए, जो पहले से ही है, उसे तब तक अधिलेखित कर दिया जाएगा, जब तक कि noclobber सेट न हो जाए>>फ़ाइल के अंत में जोड़ देगा।


और अगर noclobberयह सेट (bash) किया गया है तो इसे अधिलेखित नहीं करता है ।
हॉक पेजिंग

मेरे उत्तर को अपडेट किया, स्पष्टीकरण के लिए धन्यवाद।
जोश जॉली

5
@HaLLaging noclobberबस एक बशीवाद नहीं है। यह
kojiro

6

जैसा कि अन्य लोगों ने उत्तर दिया है, >एक कमांड नहीं है, बल्कि एक रीडायरेक्ट ऑपरेटर है। हालाँकि, शब्द 'पुनर्निर्देशन ऑपरेटर' विशेष रूप से संदर्भित नहीं करता है >, लेकिन विभिन्न संभावित पुनर्निर्देशन ऑपरेटरों की संख्या। dashआदमी पेज सूचियों पुनर्निर्देशन ऑपरेटर के रूप में निम्नलिखित:

 < > >| << >> <& >& <<- <>

मुझे यकीन नहीं है कि प्रत्येक के लिए एक वैध व्यक्तिगत नाम है। हो सकता है कि यदि आप कुछ पुराने शेल मैनुअल के माध्यम से खुदाई करें तो आपको कुछ दिलचस्प मिलेगा। यह स्रोत , सही या गलत है, निश्चित रूप से उनमें से कुछ का नामकरण किया गया है:

>  - 'output redirection operator'
<  - 'input redirection operator'
>> - 'output append operator'

लेकिन:

2> - 'standard error redirection operator'

हालाँकि मुझे नहीं लगता कि यह वास्तव में सही है क्योंकि 2तकनीकी रूप से ऑपरेटर के हिस्से के बजाय एक तर्क है।

एक त्वरित संदर्भ (यदि आप उपरोक्त में से किसी को भी नहीं पहचानते हैं):

>   - redirect output stream to a file, eg >somefile (for stdout) or 2>somefile
>|  - as above but overwrite the file even if the noclobber shell option is set
>>  - append output stream to file
<   - redirect input stream from file, n defaults to 0 for stdin
<>  - open file for reading and writing on stdin
>&  - redirect output stream to another stream (eg >&1) or close with - (eg 2>&-)
<<  - here document - see http://en.wikipedia.org/wiki/Here_document
<<- - here document with leading tabs removed.

में bashआप भी है:

<<< - here string, a one line here file. Eg <<<"foo bar"

बहुत अच्छा त्वरित संदर्भ सूची, लेकिन <<-प्रमुख टैब और रिक्त स्थान नहीं निकालते हैं ?
आइकनोकॉस्ट

@ डायनोकॉस्ट, नोप, निश्चित रूप से सिर्फ टैब।
ग्रीम

0

> फ़ाइल (या डिवाइस) के लिए आउटपुट को रीडायरेक्ट करता है, जो पहले से ही वहां मौजूद है

>> एक फ़ाइल (या डिवाइस) के लिए आउटपुट को रीडायरेक्ट करता है जो पहले से मौजूद कुछ भी है

< एक फ़ाइल (या डिवाइस) से डेटा को प्रोग्राम या डिवाइस पर निर्देशित करता है

<< यहाँ एक दस्तावेज़ है



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