पुनर्निर्देशन शैल


1

क्या कोई निम्नलिखित की व्याख्या कर सकता है?

:~$ ls macreave.sh fgvdvg > testo 2> testo
:~$ cat testo 
macreave.sh 
ccess fgvdvg: No such file or directory 

:~$ ls macreave.sh fgvdvg > testo 2>&1
:~$ cat testo 
ls: cannot access fgvdvg: No such file or directory 
macreave.sh 

इसे करने का पहला तरीका यह त्रुटि संदेश के पहले कुछ अक्षर खाता है, दूसरा तरीका इसे ठीक दिखाता है। ऐसा क्यों है?

जवाबों:


1

दूसरी आज्ञा के साथ

:~$ ls macreave.sh fgvdvg > testo 2>&1

आप lsstderout ( 2>&1) और फ़ाइल के लिए stdout की तुलना में एक ही दर्जकर्ता को लिखे जाने का कारण बना सकते हैं testo: तो आपके पास एक अद्वितीय फ़्लक्स है जो आपकी फ़ाइल में समाप्त होता है।

इसके बजाय पहले कमांड के साथ

ls macreave.sh fgvdvg > testo 2> testo

आप उसी फ़ाइल में स्वतंत्र रूप से रीडायरेक्ट कर रहे हैं testo। समस्या पाइपिंग है और पुनर्निर्देशन एसिंक्रोनस हो सकता है ( यह उत्तर भी देखें ); आपके पास 2 फ़्लक्स हैं जो आपकी फ़ाइल में इसे फिर से बनाने दोनों को खत्म करते हैं।

ऐसा लगता है:

  • तेजी से stderror थी (कुछ बाइट्स के लिए) जो एक फ़ाइल testo( >) बनाता है और ls के अंदर लिखता है : a
  • तब यह स्टडआउट आ जाता है जो एक ही फाइल ( >) को मिटाता है जो अंदर मिटा देता है और आउटपुट macreave.sh डालता है
  • अंत में यह stderr का दूसरा भाग आता है जो फ़ाइल में लिखता है जो ccess fgvdvg रहता है : ऐसी कोई फ़ाइल या निर्देशिका नहीं

हो सकता है अगर आप फिर से अमल करते हैं तो आपके पास एक अलग परिणाम होगा।

संदर्भ

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