দুটি প্রোগ্রাম থেকে stdout পুনর্নির্দেশ


9

আমি একটি সি ++ কোডে (প্রগ 2) একটি মেমরি চেক টুল (প্রগ 1) চালাচ্ছি, উভয়ই আমাকে একটি বিশাল এবং বিস্তারিত আউটপুট দেয়। কিছু বাগ তাড়া করতে আমার এই আউটপুটটিকে একটি ফাইলে সংরক্ষণ করতে হবে।

আমি স্টাডাউটটিকে একটি ফাইলে পুনর্নির্দেশের চেষ্টা করেছি:

prog1 prog2 > outfile.txt

কিন্তু এটি আমাকে প্রগ 2 এর আউটপুট সমেত একটি ফাইল দেয়, যখন প্রগ 1 এর আউটপুট এখনও টার্মিনালে চলে যায়।

আমি যে কোনও ফাইলের মধ্যে দুটি আউটপুট যেতে চাই তা নির্দিষ্ট করার কোনও উপায় কী জানেন? পছন্দ (prog1 prog2) > outfile.txt?

উত্তর:


19

একটি ভাল সুযোগ আছে যা prog1স্ট্যান্ডার্ড ত্রুটিতে তার আউটপুট লিখছে। আপনি উভয় আউটপুট একক ফাইলে পুনর্নির্দেশ করতে পারেন

prog1 prog2 > outfile.txt 2>&1

অথবা আপনি ফলাফল আউটপুট বিভক্ত করতে পারেন

prog1 prog2 > outfile.txt 2> errors.txt

এটি স্বতন্ত্র প্রোগ্রামগুলির আউটপুট পৃথক করে না , এটি আউটপুট চ্যানেলগুলিকে পৃথক করে। দেখুন শেলের নিয়ন্ত্রণ এবং পুনঃনির্দেশ অপারেটরগুলি কী কী? বিস্তারিত জানার জন্য.

আপনি যদি prog1ডকুমেন্টেশনের দিকে লক্ষ্য করেন তবে এর পরিবর্তে কোনও নামকৃত ফাইলটিতে এটির আউটপুট সংরক্ষণ করতে বলার জন্য আপনি একটি বিকল্প খুঁজে পেতে পারেন। উদাহরণস্বরূপ, সাথে strace,

strace -o strace.txt prog2 > outfile.txt

সংরক্ষণ করবে strace's আউটপুট strace.txt, এবং মানক আউটপুটে লিখিত সবকিছু outfile.txt


5
2>&1পরে যেতে হবে > outfile.txt। পুনর্নির্দেশ বিষয়গুলির অর্ডার।
বার্মার

ভবিষ্যতের পাঠকদের জন্য নোট: @ বারমার একেবারে সঠিক যে পুনঃনির্দেশগুলির আপেক্ষিক আদেশ একে অপরের সাথে সম্মানজনক। যারা কম পরিচিত তাদের জন্য, প্রোগ্রাম আর্গুমেন্টের সাথে পুনর্নির্দেশের ক্রমটি কেবলমাত্র কয়েকটি ক্ষেত্রে গুরুত্বপূর্ণ। শুরু এবং শেষটি সাধারণ অবস্থান, তবে মাঝেমধ্যে মাঝেমধ্যেও ঘটে (দয়া করে এটি করবেন না)। echo >&2 hello worldসমতূল্য echo hello world >&2। আরো এখানে তথ্য: tldp.org/LDP/abs/html/io-redirection.html
প্রায় দুই একর পরিমাণবিশিষ্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.