मुझे टी का उपयोग करने का अधिक अनुभव नहीं है, इसलिए मुझे उम्मीद है कि यह बहुत बुनियादी नहीं है।
इस सवाल का एक जवाब देखने के बाद मैं एक अजीब सा व्यवहार करने लगा 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 में) चलाया तो परिणाम गलत क्रम में था, कॉलम हेडर grep परिणामों से नीचे थे (हालांकि यह फिर से नहीं हुआ), इसलिए मैंने चारों ओर कमांड स्वैप करने की कोशिश की:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
केवल पहली पंक्ति ही छपी है, और कुछ नहीं! क्या मुझे टीआरई का उपयोग जीआरईपी पर पुनर्निर्देशित करने के लिए किया जा सकता है, या क्या मैं गलत तरीके से कर रहा हूं?
जैसा कि मैं इस प्रश्न को टाइप कर रहा था, दूसरी कमांड ने वास्तव में मेरे लिए एक बार काम किया, मैंने इसे पांच बार फिर से चलाया और फिर एक पंक्ति के परिणाम पर वापस आ गया। क्या यह सिर्फ मेरी व्यवस्था है? (मैं tmux के भीतर zsh चला रहा हूं)।
अंत में, पहले कमांड के साथ "grep syslog" को परिणाम के रूप में क्यों नहीं दिखाया गया है (केवल एक परिणाम है)?
नियंत्रण के लिए यहाँ बिना grep है 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'
।