পাইপ এবং stdout সরাসরি আউটপুট


14

আমি ভাবছিলাম যে কোনও কমান্ডের আউটপুট পাইপ করার এবং এটি স্টাডআউটের দিকে পরিচালিত করার কোনও উপায় আছে কিনা? সুতরাং উদাহরণস্বরূপ, fortuneএকটি ভাগ্য কুকি মুদ্রণ করে এবং এটি ক্লিপবোর্ডে অনুলিপি করে:

$ fortune | tee >(?stdout?) | pbcopy 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and
the Ugly)."
(By Matt Welsh)

আমার হাতে আমার ওএসএক্স নেই, কি হবে fortune | tee $(tty) | pbcopy?
আরচেমার 12

উত্তর:


9

আপনার অনুমান:

fortune | tee >(?stdout?) | pbcopy

কাজ করবে না কারণ fortuneআউটপুটটি স্ট্যান্ডার্ডে দু'বার লেখা হবে, সুতরাং আপনি আউটপুট দ্বিগুণ করবেন pbcopy

ওএসএক্স (এবং অন্যান্য সিস্টেম সমর্থন /dev/std{out,err,in}) এ আপনি এটি পরীক্ষা করতে পারেন:

$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2

আউটপুট 2দুইবার পরিবর্তে 1এবং 2

আপনাকে অবশ্যই অন্যান্য ফাইল বর্ণনাকারী ব্যবহার করতে হবে, উদাহরণস্বরূপ স্ট্যান্ডার্ড ত্রুটি এর মাধ্যমে /dev/stderr:

$ echo 1 | tee /dev/stderr | sed 's/1/2/'
1
2

বা ttyসংযুক্ত সিউডো টার্মিনালটি পেতে ব্যবহার করুন :

$ echo 1 | tee "$(tty)" | sed 's/1/2/'
1
2

সঙ্গে zshএবং multiosবিকল্প সেট, আপনি প্রয়োজন নেই teeএ সব:

$ echo 1 >/dev/stderr | sed 's/1/2/'
1
2

tee $(tty)অথবা, tee /dev/tty
ইয়াকেন

দুর্দান্ত ব্যাখ্যা, চারিদিকে শীর্ষ এসও উত্তর।
মের্লিন

11

teeসর্বদা তার স্ট্যান্ডার্ড আউটপুট লিখুন। যদি আপনি স্ট্যান্ডার্ড আউটপুট ইতিমধ্যে চলছে এমন টার্মিনাল ছাড়াও একটি কমান্ডে ডেটা প্রেরণ করতে চান তবে কেবলমাত্র সেই কমান্ডের সাহায্যে প্রক্রিয়া বিকল্প ব্যবহার করুন। (নোট করুন যে শুরু করার পরেও >, প্রক্রিয়া বিকল্পটি স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ করে না, teeকমান্ডটি এটি প্যারামিটার হিসাবে দেখায়))

fortune | tee >(pbcopy)

এটি ভাল, একটি ভাল সমাধানও।
মের্লিন

0

কিউংলম সব বলেছে।

ঠিক করার চেষ্টা করুন:

fortune | tee "$(tty)" | pbcopy

tty/dev/pts/99ইন্টারেক্টিভ সেশনে প্রকৃত সিউডো টার্মিনাল (যেমন ) টার্মিনাল ( অথবা টার্মিনালে) সমাধান করা উচিত , বা ব্যাচে কোনও টিটি , এ এবং ডেমন নেই।

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