এক্সিকিউট এবং লগ ফাইলে টি: এই বাশ কমান্ডগুলি ব্যাখ্যা করুন


15

আমি এটি আমার ব্যাশ স্ক্রিপ্ট ফাইলের শীর্ষে দেখেছি:

export LOGFILE=$LOGDIRECTORY/${SCRIPT_NAME}.log
exec > >(tee $LOGFILE)
exec 2>&1

এটার কাজ কি? এখানে দুটি নির্বাহী প্রক্রিয়াগুলি কী করছে? আমি বুঝতে পারি যে এটিকে এভাবে রাখলে, স্ক্রিপ্টটি কার্যকর করার সমস্ত আউটপুট পাইপ করা হয়েছে $LOGFILEতবে আমি execবিবৃতিগুলির দৃষ্টিকোণ থেকে বুঝতে চেয়েছিলাম ।


এটি এটি পরিষ্কার করে দিতে পারে: linuxj
Journal.com/content/bash-rediretions-

1
আপনি আপনার বাশ স্ক্রিপ্ট ফাইলের শীর্ষে এটি দেখেছেন ? ;)
Sebb

1
দুটি execলাইন পুরোপুরি ঠিক এক ( exec > >(tee "$LOGFILE") 2>&1) হতে পারে ।
জোনাথন লেফলার

উত্তর:


18

শেলগুলিতে, exec1) ফাইল খোলার এবং পুনর্নির্দেশগুলি 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") teeteetee

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.