जब वे खुले हों, तो मैं विवरणकर्ताओं (एफडी) को 3 से अधिक या उसके बराबर फ़ाइल करने के लिए बैश स्क्रिप्ट आउटपुट अतिरिक्त जानकारी देना चाहता हूं। एफडी खुली है या नहीं, यह जांचने के लिए, मैंने निम्नलिखित ट्रिक तैयार की:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
यह मेरी जरूरतों के लिए पर्याप्त है, लेकिन मैं इस बात के लिए उत्सुक हूं कि क्या एफडी वैध है या नहीं, परीक्षण का एक और अधिक मुहावरेदार तरीका है। मुझे इस बारे में विशेष रूप से दिलचस्पी है कि क्या fcntl(1)शेल कमांड में मैपिंग कमांड मौजूद है, जो एफडी झंडे की पुनर्प्राप्ति की अनुमति देगा ( O_WRONLYऔर O_RDWRयह जांचने के लिए कि एफडी लिखने योग्य है, O_RDONLYऔर O_RDWRयह जांचने के लिए कि एफडी पठनीय है)।
<>? शेल अपने स्टाडर से पढ़ने नहीं जा रहा है, आप इसे रीड + राइट में क्यों खोलना चाहेंगे? आंतरिक के साथ क्या हुआ, इसका क्या मतलब है ? ?