একটি কমান্ডের আউটপুট অন্য দুটি কমান্ডে পাইপ করা যায়?


27

আমি কীভাবে এক সাথে অন্য দুটি কমান্ডের ইনপুটটিতে একটি কমান্ডের আউটপুট পাইপ করব?


4
হ্যাঁ। এই স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন: স্ট্যাকওভারফ্লো.
ব্লেয়ার কনরাড

উত্তর:


56

মনে হচ্ছে teeকমান্ডটি যা চাইবে তা করবে।

কী ব্যবহার করা হয়

>( )

জন্য প্রক্রিয়া প্রতিকল্পন । সহ tee, নিম্নলিখিত প্যাটার্নটি ব্যবহার করুন:

tee >(proc1) >(proc2) >(proc3) | proc4

সুতরাং আপনি যদি আউটপুটটিকে lsদুটি পৃথক grepপ্রোগ্রামের ইনপুট হিসাবে ব্যবহার করতে চান , তবে প্রতিটিটির আউটপুট grepবিভিন্ন ফাইলগুলিতে সংরক্ষণ করুন এবং ফলাফলগুলির সমস্ত পাইপ ব্যবহার lessকরে দেখুন:

ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less

এর ফলাফলগুলি ls -Aউভয় ক্ষেত্রেই "পাইপযুক্ত" হবে grep। ফাইল hidden-filesপ্রথম আউটপুট সামগ্রী থাকবে grep, এবং normal-filesদ্বিতীয় ফলাফল থাকবে grepফাইলগুলির সমস্ত প্যাজারে প্রদর্শিত হবে less সম্পাদনা : আপনি দেখতে lessহয় একই সঠিক আউটপুট এর ls -A, না ফল grepসে। আপনার কাছ থেকে আউটপুট পরিবর্তন করতে চান তাহলে ls -Aকরতে less, (যেমন সোয়াপিং অর্ডার তাই স্বাভাবিক ফাইল লুকানো বেশী সামনে তালিকাভুক্ত করা হয়) তাহলে এই চেষ্টা:

ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less

ছাড়া >/dev/null, আউটপুট greps এর আউটপুট যোগ করা হবে ls -Aপ্রতিস্থাপন পরিবর্তে।

সূত্র


3
এই এক খুব ভাল!
হাইয়ালকি

3
+1 কারণ শেল স্ক্রিপ্টিংয়ের 10 বছর পরেও, আমি এটি কখনও দেখিনি!
jtimberman

6

"টি" ব্যবহার করুন।

উদাহরণ:

grep someSearchString someFile | tee /dev/tty | wc -l > grepresult

এই উভয় টার্মিনালে এবং grep কমান্ড প্রয়োগ আউটপুট পাঠাব wc- (যার আউটপুট ঘুরে ফাইল grepresult থেকে আপনাকে পুনঃনির্দেশিত করা হয়)।

"টি" উইকিপিডিয়া নিবন্ধ টি (কমান্ড) এ ব্যাখ্যা করা হয়েছে । কেন্দ্রীয়টি হ'ল: "টি কমান্ড স্ট্যান্ডার্ড ইনপুটটি পড়বে, তারপরে তার সামগ্রীটি স্ট্যান্ডার্ড আউটপুটে লিখে এবং একই সাথে নির্দিষ্ট ফাইল (গুলি) বা ভেরিয়েবলগুলিতে অনুলিপি করে।"

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