कमांड का आउटपुट न तो stderr में है और न ही stdout में


16

मैंने इस मुद्दे पर ठोकर खाई है, इसलिए मैं सोच रहा हूं कि यह कैसे संभव है?

कमांड के मानक रन:

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14
info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000017"
sent: 1; skipped: 0; total: 1

ठीक है, केवल पहली पंक्ति प्राप्त करने का प्रयास करता है:

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head -1
sent: 1; skipped: 0; total: 1

मानक सिर के बारे में क्या?

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head 
sent: 1; skipped: 0; total: 1

उलटा grep? sed? टी?!?!? !!?

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | grep -v pero
sent: 1; skipped: 0; total: 1

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | sed 's/foo/bar/'
sent: 1; skipped: 0; total: 1

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | tee
sent: 1; skipped: 0; total: 1

stdout करने के लिए stderr?

# zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 2>&1 | tee
sent: 1; skipped: 0; total: 1

मैं वास्तव में हैरान हूँ ...


आप किससे उम्मीद कर रहे थे tee? दौड़ने से क्या होता है zabix_sender <options> 2>&1 | head -1?
terdon

जवाबों:


16

यह तब हो सकता है जब एप्लिकेशन सीधे STDOUT या STDERR के बजाय TTY को लिख रहा हो।

आप नीचे दिए गए 2 उदाहरणों की तुलना करके इस व्यवहार के साथ खेल सकते हैं

( echo foo ) &>/dev/null
( echo foo > $(tty) ) &>/dev/null

ध्यान दें कि पहला कुछ भी नहीं दिखाता है, लेकिन दूसरा करता है। ऐसा इसलिए है क्योंकि हमने आउटपुट को सीधे टैटी पर भेज दिया है और इसके लिए रीडायरेक्शन को बायपास कर दिया है /dev/null

आप इस तरह से सामान का उपयोग करके प्राप्त कर सकते हैं script

script -c '( echo foo > $(tty) ) &>/dev/null'  >/dev/null

मूल रूप से scriptउपयोगिता एक नकली tty बनाता है और उस tty में कमांड लॉन्च करता है। कमांड से कोई भी आउटपुट STDOUT में भेजा जाता है जिसे आप सामान्य रूप से रीडायरेक्ट कर सकते हैं।


सूचक को "स्क्रिप्ट" के लिए धन्यवाद! ठीक यही बात मुझे gpg / gpg2 के जिद्दीपन के इर्द-गिर्द काम करने की ज़रूरत थी, जो स्टडिन से न पढ़ने की जिद थी।
एरिक

धन्यवाद। यहां पहुंचने के लिए काफी खोज की। कमाल है कि यह एक ऐसा अलोकप्रिय सवाल है (मैं VLC से निपट रहा हूं)।
पॉल

script: illegal option -- c:( क्या आप कोई अन्य वर्कअराउंड के बारे में जानते हैं?
हारून
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.