শেলগুলিতে, exec
1) ফাইল খোলার এবং পুনর্নির্দেশগুলি 2) আসল exec
ইনিং (বর্তমান প্রক্রিয়া চিত্রটি অন্য প্রক্রিয়া চিত্রের সাথে প্রতিস্থাপন করা)।
এই exec
গুলি পুনঃনির্দেশ।
প্রথম আপনাকে পুনঃনির্দেশিত ( exec 1> >(tee $LOGFILE)
) stdout
একটি প্রক্রিয়া প্রতিকল্পন-জেনারেট হওয়া একটি একই সময়ে চালানো সংযুক্ত পাইপ থেকে বর্ণনাকারী (1) tee
প্রক্রিয়া আছে যা $LOGFILE
তার প্রথম আর্গুমেন্ট হিসাবে এবং তারপর আপনি পুনর্নির্দেশ stderr
যেখানে বর্ণনাকারী হিসাবে একই জায়গা বর্ণনাকারী (2) 1
এখন পয়েন্ট (টী বর্ণের নাম পাইপ)।
ফাইলডেস্ক্রিপ্টররা উত্তরাধিকার সূত্রে প্রাপ্ত তা মাথায় রেখে, আপনি কেবল সমস্ত ভবিষ্যত stdout
এবং stderr
আউটপুট tee
প্রক্রিয়াটিতে চলে $LOGFILE
এসেছেন , যা এটিকে লিখে এবং যেখানেই ফাইলডেস্ক্রিপ্টর 1 মূলত (সম্ভবত আপনার টার্মিনাল) নির্দেশ করেছেন।
দ্রষ্টব্য:
টি প্রক্রিয়াটি মূল স্টডআউট (= মূল ফাইলডেস্কিটার 1) এ আউটপুট দেয় কারণ আপনি সরল কমান্ড প্রসারণ এবং প্রক্রিয়া সাবস্টিটিউশনের জন্য বাশ (1) থেকে অনুসন্ধান করতে পারবেন , প্রক্রিয়া প্রতিস্থাপন ( ) ঘটে (অন্যান্য সম্প্রসারণের সাথে আগে) পুনর্নির্দেশগুলি কার্যকর করা হয়, যার অর্থ পুনর্নির্দেশটি শুরু হওয়ার পরে ঘটে , একই ফাইলডেস্কিটার 1 দিয়ে প্যারেন্ট শেল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। (যদি এটি অন্যভাবে থাকে তবে তার নিজস্ব ইনপুটটিতে লিখতে তৈরি করা হত, যা এটির আইও প্যাটার্নের উপর নির্ভর করে এটিকে অচলাবস্থা তৈরি করতে পারে)।>()
<()
exec 1> >(tee "$LOGFILE")
tee
tee
tee