আমার কাছে টি ব্যবহারের খুব বেশি অভিজ্ঞতা নেই, তাই আমি আশা করি এটি খুব মৌলিক নয়।
এই প্রশ্নের উত্তরগুলির একটি দেখার পরে আমি একটি অদ্ভুত আচরণের সাথে এসেছিলাম tee
।
আমার প্রথম লাইন এবং একটি সন্ধান করা লাইন আউটপুট করার জন্য, আমি এটি ব্যবহার করতে পারি:
ps aux | tee >(head -n1) | grep syslog
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
যাইহোক, প্রথমবার যখন আমি এটি চালিত (zsh) ফলাফলটি ভুল ক্রমে ছিল, কলামের শিরোনামগুলি গ্রেপের ফলাফলের নীচে ছিল (এটি অবশ্য আবার ঘটেনি), তাই আমি কমান্ডগুলি চারপাশে বদলে নেওয়ার চেষ্টা করেছি:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
কেবল প্রথম লাইনটিই মুদ্রিত, আর কিছুই না! আমি কি গ্রে ব্যবহার করে পুনর্নির্দেশ করতে টি ব্যবহার করতে পারি, বা আমি এটি ভুল পদ্ধতিতে করছি?
আমি যখন এই প্রশ্নটি টাইপ করছিলাম, দ্বিতীয় কমান্ডটি আসলে আমার জন্য একবার কাজ করেছিল, আমি এটি আবার পাঁচবার চালিয়েছিলাম এবং তারপরে আবার এক লাইনের ফলাফলে ফিরে এসেছি। এটা কি শুধু আমার সিস্টেম? (আমি tmux মধ্যে zsh চালাচ্ছি)।
অবশেষে, কেন প্রথম কমান্ডটি "গ্রেপ সিস্লগ" ফলাফল হিসাবে দেখানো হয়নি (কেবলমাত্র একটি ফলাফল রয়েছে)?
নিয়ন্ত্রণের জন্য এখানে ছাড়াই গ্রেপ tee
ps aux | grep syslog
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
henry 2290 0.0 0.1 95220 3092 ? Ssl Sep07 3:12 /usr/bin/pulseaudio --start --log-target=syslog
henry 15924 0.0 0.0 3128 824 pts/4 S+ 13:44 0:00 grep syslog
আপডেট: দেখে মনে হচ্ছে যে হেড পুরো কমান্ডকে ছাঁটাই করছে (নীচের উত্তরে বর্ণিত হিসাবে) নীচের কমান্ডটি এখন নিম্নলিখিতটি ফিরিয়ে দিচ্ছে:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806
ps aux | sed -n -e '1p' -e '/syslog/p'
।