मैं बैश शुरुआती हूं लेकिन मैं इस उपकरण को कंप्यूटर में नौकरी पाने के लिए सीखने की कोशिश कर रहा हूं।बैश: फ़ाइल डिस्क्रिप्टर
मैं अब फ़ाइल डिस्क्रिप्टर के बारे में खुद को पढ़ाने की कोशिश कर रहा हूं।
#!/bin/bash
# Some dummy multi-line content
read -d '' colours <<- 'EOF'
red
green
blue
EOF
# File descriptor 3 produces colours
exec 3< <(echo "$colours")
# File descriptor 4 filters colours
exec 4> >(grep --color=never green)
# File descriptor 5 is an unlimited supply of violet
exec 5< <(yes violet)
echo Reading colours from file descriptor 3...
cat <&3
echo ... done.
echo Reading colours from file descriptor 3 again...
cat <&3
echo ... done.
echo Filtering colours through file descriptor 4...
echo "$colours" >&4
echo ... done. # Race condition?
echo Dipping into some violet...
head <&5
echo ... done.
echo Dipping into some more violet...
head <&5
echo ... done.
कुछ सवाल वसंत मन में के रूप में मैं उत्पादन ऊपर से आ रही देखें::
- fd3 के बाद "समाप्त" करने के लिए लगता है मुझे मेरे प्रयोगों में से कुछ साझा करते हैं "खपत", क्या यह पहले उपयोग के बाद भी स्वचालित रूप से बंद हो जाता है?
- नामित पाइप से fd3 अलग कैसे है? (कुछ मैंने पहले ही देखा है)
- जब बिल्कुल कमांड
yes
निष्पादन शुरू करता है? एफडी घोषणा पर? बाद में? yes
स्टॉप (CTRL-Z
या अन्य) और अधिक बैंगनी की आवश्यकता होने पर पुनरारंभ करें?- मैं
yes
का पीआईडी कैसे प्राप्त कर सकता हूं? - क्या मुझे "सक्रिय" एफडीएस की सूची मिल सकती है?
- एफडी 4 के माध्यम से फ़िल्टर करने पर बहुत ही रोचक दौड़ की स्थिति, क्या इससे बचा जा सकता है?
yes
केवलexec 5>&-
पर रुक जाएगा?- इससे कोई फर्क नहीं पड़ता कि मैं
>&-
या<&-
के साथ बंद करता हूं?
मैं अभी यहां रुक जाऊंगा।
धन्यवाद!
पुनश्च: आंशिक (गिने) जवाब ठीक हैं .. मैं एक साथ विभिन्न बिट और टुकड़े डाल देता हूँ अपने आप को .. (हालांकि एक भी व्यक्ति से एक व्यापक जवाब प्रभावशाली होगा!)
'1. यह' बिल्ली 'द्वारा _closed_ हो जाता है, आह-ए! '2.' गॉचा '3.' और '4.' यह कभी" ब्लॉक और प्रतीक्षा "नहीं लगता है? 'exec 3 <<(सत्य होने पर; तारीख करें '+% एच-% एम-% एस' | टीई-ए/टीएमपी/लॉग; नींद 1; किया गया); tail -f/tmp/log' '6. शर्म की बात है! :('7. 'आपने मुझे' प्रतीक्षा 'के बारे में सिखाया !!' नींद 5 और पीआईडी = $!; पहले गूंजें; $ pid प्रतीक्षा करें; इसके बाद गूंज करें - इसे प्यार करें! ** प्रभावशाली उत्तर ** !! ** धन्यवाद * * !!!! – Robottinosino
पुन: "यह कभी भी ब्लॉक और प्रतीक्षा नहीं करता है"। यह अंततः अवरुद्ध होगा ... जब कर्नेल निर्णय लेता है कि उसने पाइप में पर्याप्त डेटा को बफर किया है। मैंने आपका उदाहरण बदल दिया ताकि यह आउटपुट हो प्रत्येक बार लूप के माध्यम से जंक टेक्स्ट का एक गुच्छा (बस इसे तेज़ी से जाने के लिए), और मेरे लिए यह अवरुद्ध हो गया जब '/ tmp/log' फ़ाइल लगभग 48 किलोबाइट हो गई। केवल 'दिनांक' +% H-% के साथ एम-% एस 'यह अभी भी होना चाहिए, इसमें अधिक समय लगेगा :-) – Celada
** गोल्डन **। आप ☆ आदमी हैं ☆ – Robottinosino