কোনও প্রোগ্রামের আউটপুট পুনর্নির্দেশ করার কোনও উপায় আছে এবং এখনও এটি স্টডআউটে চলে গেছে?


24

ঠিক আছে. আমি যদি কোনও প্রোগ্রামের আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করতে চাইতাম তবে আমি এই জাতীয় কিছু করব

prog > file

আমি যদি স্টডআউট এবং স্ট্ডার উভয়ই সেই ফাইলে পুনর্নির্দেশ করতে চাই, তবে আমি করব

prog > file 2>&1

আপনি যদি আউটপুটটি ফাইলে যেতে চান তবে এটি সব ভাল এবং ভাল। তবে আপনি যদি আউটপুটটি ফাইলটিতে যেতে চান এবং এখনও স্টাডআউট / স্টার্ডারে যেতে চান? সুতরাং, আউটপুটটি ফাইলটিতে সংরক্ষিত হয়েছে, তবে প্রোগ্রামটি চলমান থাকায় আপনি এটি কনসোলে এখনও দেখতে পাবেন। এটা করার কোন উপায় আছে? এবং যদি তা হয়, কিভাবে?


পরিভাষা: আপনার অর্থ এবং এখনও টার্মিনালে যানstdoutএটি ফাইল-বর্ণনাকারী 1 এবং এর foo > some_fileঅর্থ একটি লিখন-কেবল ফাইল বর্ণনাকারী খোলা ছিল some_fileফু এর স্টাডআউট। stdout সর্বদা stdout যায়।
পিটার কর্ডেস

উত্তর:


39

teeএই উদ্দেশ্যে বিদ্যমান; এটি একটি ফাইলের নাম আর্গুমেন্ট গ্রহণ করে এবং এটি স্টিডিন থেকে স্টাডআউট এবং ফাইল উভয়ই পড়া ডেটা লিখে:

$ prog 2>&1 | tee file

10
এবং অতিরিক্ত ব্যাশ 4 বুদ্ধিসম্পন্নতা জন্য: prog |& tee file
তোবু

1
আপনি একটি নামক পাইপ দিয়ে 'ফাইল' প্রতিস্থাপন করতে পারেন ...
কেভিন ক্যান্টু

@ কেভিনক্যান্টু: একটি নামযুক্ত পাইপ কেবল এক ধরণের ফাইল; এটি ইউনিক্স যেখানে সবকিছুই একটি ফাইল। আপনি এটিও করতে পারেন prog |& tee /dev/tty > file, যা পাইপলাইনের মাঝখানে কার্যকর হতে পারে, যেমন foo |& tee /dev/tty | sed 's/.*\r//' > foo.logআপনার টার্মিনালে স্থিতি-রেখার অগ্রগতি আপডেটগুলি দেখতে, তবে সেগুলি লগ ফাইলের বাইরে ফিল্টার করে। বা আপনি যে পাইপলাইনটি হ্যাক করছেন তা ডিবাগ করার জন্য এটি ব্যবহার করুন যাতে আপনাকে সেই সময়ে ডেটা দেখতে দেয়।
পিটার কর্ডেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.