त्वरित एक, 2>&1
stderr को stdout पर रीडायरेक्ट करता है, लेकिन एम्परसैंड का क्या अर्थ है? मुझे पता है कि हमारे पास 2 > 1
था, यह 1
नाम की एक फ़ाइल में आउटपुट होगा, एम्परसेंड क्या करता है?इस बैश कमांड में एम्पर्सेंड इंगित करता है 1> और 2
उत्तर
यह प्रतियां फ़ाइल वर्णनकर्ता 1 दायर करने के लिए वर्णनकर्ता 2. FD2 stderr है और FD1, stdout है, इसलिए यह बनाता है stderr के लिए कोई आउटपुट इसके बजाय stdout पर जाना।
धन्यवाद, इसलिए फ़ाइल – mikip
फ़ाइल के बजाय desciptor फ़ाइल आउटपुट का मतलब है और यह फ़ाइल वर्णनकर्ताओं में हेरफेर करता है। –
2>&1
मानक फ़ाइल (फ़ाइल हैंडल 2) को उसी फ़ाइल में रीडायरेक्ट करता है जो मानक आउटपुट (फ़ाइल हैंडल 1) वर्तमान में पर जा रहा है।
यह भी तो एक स्थिति पर निर्भर बात है:
prog >x 2>&1 >y
वास्तव में मानक त्रुटि x
और मानक आउटपुट में y
को इस प्रकार भेज देंगे:
- कनेक्ट
x
को मानक आउटपुट; - फिर वर्तमान मानक आउटपुट के रूप में मानक त्रुटि को कनेक्ट करें, जो
x
है; - फिर मानक उत्पादन को
y
से कनेक्ट करें;
अगर मैं कर सकता तो मैं कई बार इसे ऊपर उठाऊंगा। मैं इसे खत्म कर रहा हूं, और * ऑर्डर * के महत्व के बारे में आपकी व्याख्या वर्तमान बैश दस्तावेज से स्पष्ट है: http://www.gnu.org/software/bash/manual/bashref.html#Redirections। धन्यवाद! – FMc
यह चीजों को बताता है! लिनक्स का उपयोग करने के अपने 8 वर्षों में, किसी ने भी इस बात को स्पष्ट रूप से समझाया नहीं! धन्यवाद दोस्त। –
info bash
से:
3.6.7 Duplicating File Descriptors
----------------------------------
The redirection operator
[N]<&WORD
is used to duplicate input file descriptors. If WORD expands to one
or more digits, the file descriptor denoted by N is made to be a copy
of that file descriptor. If the digits in WORD do not specify a file
descriptor open for input, a redirection error occurs. If WORD
evaluates to `-', file descriptor N is closed. If N is not specified,
the standard input (file descriptor 0) is used.
The operator
[N]>&WORD
is used similarly to duplicate output file descriptors. If N is not
specified, the standard output (file descriptor 1) is used. If the
digits in WORD do not specify a file descriptor open for output, a
redirection error occurs. As a special case, if N is omitted, and WORD
does not expand to one or more digits, the standard output and standard
error are redirected as described previously.
तो 2>&1
डुप्लिकेट fd पर fd 1 2.
एम्परसैंड "1" से संबंधित है, इसलिए स्निपेट में वास्तव में तीन भाग हैं: "2", ">", "& 1"। उनका मतलब है, क्रमशः, "आउटपुट स्ट्रीम 2 (जो मानक त्रुटि है) से डेटा लें," इसे रीडायरेक्ट करें ", और रीडायरेक्शन लक्ष्य, जो आउटपुट स्ट्रीम 1 है। इसलिए" & "यहां आपको मौजूदा स्ट्रीम पर रीडायरेक्ट करने की अनुमति देता है , एक फ़ाइल के बजाय।
ampersand कुछ भी नहीं करता है - यह 2>&1
ऑपरेटर में अपने आप में एक चीज़ होने की बजाय चरित्र है।
बैश कई redirection operators का समर्थन करता है, 2>&1
ऑपरेटर या &>
ऑपरेटर पुनर्निर्देशन से पहले या बाद में प्रक्रिया की धाराओं को एक साथ जोड़ता है।
&
&1
फ़ाइल डिस्क्रिप्टर 1
डुप्लिकेट करता है। डुप्लिकेट डिस्क्रिप्टर वास्तव में एक प्रति की तरह व्यवहार नहीं करता है, लेकिन पुराने के उपनाम की तरह। डुप्लिकेटिंग 1
एकाधिक धाराओं को एक दूसरे को ओवरराइट किए बिना 1
पर रीडायरेक्ट करने की अनुमति देता है।
उदाहरण: (कोई &
)
$ ls existing-file non-existent-file > tmp 2> tmp
$ cat tmp
existing-file
nt-file: No such file or directory
ध्यान दें कि 1
अधिलेखित कर दिया क्या 2
लिखा था।लेकिन जब हम &
का उपयोग नहीं:
$ ls existing-file non-existent-file > tmp 2>&1
$ cat tmp
ls: non-existent-file: No such file or directory
existing-file
एक फ़ाइल वर्णनकर्ता (जैसे कि एक पाइप या नेटवर्क सॉकेट के रूप में या अन्य इनपुट/आउटपुट संसाधन,) एक फाइल करने के लिए एक संभाल है। जब 1
और 2
अलग-अलग tmp
(पहले उदाहरण के रूप में) पर रीडायरेक्ट किए जाते हैं, तो वे स्वतंत्र रूप से tmp
फ़ाइल सूचक को स्थानांतरित करते हैं। यही कारण है कि फाइल डिस्क्रिप्टर एक-दूसरे को ओवरराइट करते हैं।
:
[डुप्लिकेट फ़ाइल वर्णनकर्ता] एक ही फ़ाइल खोलने विवरण देखें और इस तरह साझा फ़ाइल ऑफसेट और फ़ाइल स्थिति झंडे; उदाहरण के लिए, यदि फ़ाइल ऑफसेट को डिस्क्रिप्टर में से एक पर lseek (2) का उपयोग करके संशोधित किया गया है, ऑफ़सेट भी दूसरे के लिए बदल दिया गया है।
नोट है कि भले ही &
में कार्य करता है एक उपनाम की तरह, 2>&1
साधन धारा है कि 1
में वर्तमान में की ओर इशारा करते के लिए 2
अनुप्रेषित। जब 1
किसी अन्य फ़ाइल पर रीडायरेक्ट किया जाता है, 2
उसी फ़ाइल पर इंगित करता है जो इसे 1
से स्वतंत्र रूप से किया गया था।
का निरीक्षण करें: [? खोल में, क्या करता है "2> & 1" मतलब]
$ ls existing-file non-existent-file > tmp 2>&1 > tmp1
$ cat tmp1
existing-file
$ cat tmp
ls: non-existent-file: No such file or directory
- 1. नए खोल में बैश कमांड चलाएं और इस कमांड को
- 2. System.Web.Configuration.MachineKeySection.MetineKeySection.GetDecodedData इंगित करता है
- 3. इस बैश कमांड के बराबर पावरशेल क्या है?
- 4. जॉब और प्रक्रिया छापे बिना पृष्ठभूमि में बैश कमांड चलाना
- 5. इस बैश स्क्रिप्ट कितनी खतरनाक है?
- 6. बैश कमांड?
- 7. एम्पर्सेंड (&) साइन सी ++ में कैसे काम करता है?
- 8. "इस शुक्रवार" में बैश स्क्रिप्ट
- 9. बैश में कमांड लाइन तर्क
- 10. बैश कमांड लॉगर
- 11. एक प्रतिनिधि क्या इंगित करता है?
- 12. बैश कमांड लाइन
- 13. लिनक्स कमांड लाइन (बैश)
- 14. बैश कमांड या रूबी
- 15. एक बैश कमांड
- 16. बैश कमांड का आकार बदलने के लिए बैश कमांड
- 17. पार्स (बैश) टाइम कमांड
- 18. बैश कमांड और वापसी की स्थिति
- 19. कमांड लाइन/बैश
- 20. मैकॉक्स-वर्जन-मिनट क्या इंगित करता है?
- 21. बैश में <() क्या करता है?
- 22. कोई पाइथन में अमान्य तर्क कैसे इंगित करता है?
- 23. एसबीवाइट प्रक्रिया राज्य फ्रीबीएसडी टॉप में क्या इंगित करता है?
- 24. आश्चर्य! खोल कमांड लाइन स्विच करता है
- 25. एक यूआरएल में पिछला एम्पर्सेंड कानूनी है?
- 26. पाइथन में बंद() को फ्लश() को इंगित करता है?
- 27. बैश स्क्रिप्ट्स में कमांड के रूप में चर
- 28. स्प्रिंग में @ वालिड एनोटेशन क्या इंगित करता है?
- 29. क्या कोई इस बैश में इस कोशिश/पकड़ विकल्प को समझा सकता है?
- 30. चर में एम्पर्सेंड से बचें - जीत बैच
की संभावित डुप्लिकेट (http://stackoverflow.com/questions/818255/in-the-shell-what -does-21-mean) –