मैं पहले तो हैरान था। हालाँकि उत्तर पढ़ने के बाद, और थोड़ी जाँच पड़ताल करने पर, यह सरल लगता है। तो यहाँ वही है जो मैंने पाया है। (अंत में कोई आश्चर्य नहीं हुआ।)
पुनर्निर्देशन से पहले, स्टडआउट, और स्टडर उसी डिवाइस से जुड़े होने की उम्मीद है।
#ctrl-alt-delor:~$
#↳ ll /dev/std*
lrwxrwxrwx 1 root root 15 Jun 3 20:58 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Jun 3 20:58 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Jun 3 20:58 /dev/stdout -> /proc/self/fd/1
#ctrl-alt-delor:~$
#↳ ll /proc/self/fd/*
lrwx------ 1 richard richard 64 Jun 30 19:14 /proc/self/fd/0 -> /dev/pts/12
lrwx------ 1 richard richard 64 Jun 30 19:14 /proc/self/fd/1 -> /dev/pts/12
lrwx------ 1 richard richard 64 Jun 30 19:14 /proc/self/fd/2 -> /dev/pts/12
इसलिए अधिकांश पुन: दिशाओं के बाद (जो कि स्टादर है) को पुनर्निर्देशित नहीं किया जाता है। stderr अभी भी टर्मिनल से जुड़ा हुआ है। इसलिए इसे पढ़ा जा सकता है, कीबोर्ड इनपुट प्राप्त करने के लिए।
केवल एक चीज जो अप्रत्याशित दिशा में उपयोग की जा रही फाइलों को रोक रही है वह है कन्वेंशन, और पाइप यूनिडायरेक्शनल हैं।
एक और उदाहरण, कोशिश करें:
cat | less
यह एक पृष्ठ के बाद गलत हो जाता है, जब less
टर्मिनल को पढ़ने की कोशिश करता है (यह आश्चर्य की बात नहीं है, जैसा cat
कि टर्मिनल भी पढ़ रहा है)।
/dev/tty
अधिक रहस्यमय है, यह एक कड़ी नहीं है /proc/self
।
#ctrl-alt-delor:~$
#↳ ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 Jun 29 09:18 /dev/tty
देखें कि मेरे वर्तमान नियंत्रण टर्मिनल और `/ देव / tty` के बीच क्या संबंध हैं? एक खोज के लिए। लिंक के लिए @StephenKitt को धन्यवाद।
/dev/tty
, देखें ।