2013-08-02 7 views
54

मैं पृष्ठभूमि में एक प्रोग्राम (google-chrome) चलाने के लिए चाहता हूं, लेकिन किसी भी संदेश को टर्मिनल पर आउटपुट करने से रोकता हूं।सभी आउटपुट को/dev/null पर रीडायरेक्ट कैसे करें?

[5746:5746:0802/100534:ERROR:object_proxy.cc(532)] Failed to call method: org.chromium.Mtpd.EnumerateStorag...

क्या मैं गलत कर रहा हूँ:

google-chrome 2>&1 1>/dev/null & 

हालांकि, टर्मिनल अभी भी जैसे संदेश के बिना भरता है:

मैं यह कर की कोशिश की? मैं सभी आउटपुट को /dev/null पर रीडायरेक्ट कैसे करूं?

उत्तर

57

पुनर्निर्देशन ऑपरेटरों का मूल्यांकन बाएं से दाएं किया जाता है। आपने जो गलत किया था उसे 2>&1 पहले रखा गया था, जो 2 को उसी स्थान पर 1 पर इंगित करता है, वर्तमान में स्थानीय टर्मिनल स्क्रीन है, क्योंकि आपने अभी तक 1 को रीडायरेक्ट नहीं किया है। आपको क्या करने की जरूरत है या तो निम्न में से है:

2>/dev/null 1>/dev/null google-chrome & 

या

2>/dev/null 1>&2 google-chrome & 

आदेश के संबंध में पुन: निर्देशन ऑपरेटरों की नियुक्ति फर्क नहीं पड़ता। आप कमांड के पहले या बाद में उन्हें डाल सकते हैं।

+0

बिटवाईयर नोटेशन के लिए धन्यवाद: डी – erm3nda

+1

सही उत्तर http://stackoverflow.com/a/18013171/1432614 में नीचे है –

34

अनुभाग Redirection बैश के संदर्भ मैनुअल में कहते हैं:

The operator [n]>&word is used [...] to duplicate output file descriptors

file करने के लिए दोनों stderr और stdout अनुप्रेषित करने के लिए आप इसका मतलब है कि स्थानापन्न

अपने मामले के संबंध में प्रपत्र

&>file 

का उपयोग करना चाहिए

2>&1 1>/dev/null 

&>/dev/null 
+3

'>/dev/null 2> और 1' शायद '&>/dev/null' से अधिक पोर्टेबल है? – Campa

1

साथ ऐसा लगता है कि वाक्य रचना अलग है:

./a.out 1>/dev/null 2>&1 & 

एफडी के लिए उपकरण देखें = 2 जब ./a.out 1>/dev/null 2>&1 और ./a.out 2>&1 1>/dev/null &

1) एफडी = 2 अंक के लिए अलग हैं/dev/शून्य

>./a.out 1>/dev/null 2>&1 & 
[1] 21181 
>lsof -p `pidof a.out` 
COMMAND PID   USER FD TYPE DEVICE SIZE/OFF  NODE NAME 
a.out 21181 xxxxxxxxxxxxxxx 0u CHR 136,43  0t0  46 /dev/pts/43 
a.out 21181 xxxxxxxxxxxxxxx 1w CHR 1,3  0t0  3685 /dev/null 
a.out 21181 xxxxxxxxxxxxxxx 2w CHR 1,3  0t0  3685 /dev/null 

2) एफडी = 2 अंक/dev/pts/43

>./a.out 2>&1 1>/dev/null & 
[1] 25955 
>lsof -p `pidof a.out` 
COMMAND PID   USER FD TYPE DEVICE SIZE/OFF  NODE NAME 
a.out 25955 xxxxxxxxxxxxxxx 0u CHR 136,43  0t0  46 /dev/pts/43 
a.out 25955 xxxxxxxxxxxxxxx 1w CHR 1,3  0t0  3685 /dev/null 
a.out 25955 xxxxxxxxxxxxxxx 2u CHR 136,43  0t0  46 /dev/pts/43 
संबंधित मुद्दे