एक और संभावना यह है कि एक विशेष बिलिन से एक सादे पुराने बिलिन में डिमोट करने के लिए उपयोग किया commandजाए :exec
alias shh='command exec >/dev/null 2>&1'
तो अब आप कर सकते हैं:
(shh; call some process &)
मैंने अभी देखा है कि commandयह काम नहीं करता है zsh (जैसा कि अधिकांश अन्य गोले में ऐसा लगता है) , लेकिन यह वह जगह नहीं है जहां आप काम कर सकते हैं:
alias shh='eval "exec >/dev/null 2>&1"'
... जो हर जगह काम करना चाहिए।
वास्तव में, आप भी कर सकते हैं:
alias shh='command exec >"${O:-/dev/null}" 2>&1'
तो आप कर सकते हैं:
O=./logfile; (shh;echo can anyone hear &)
O=; (shh; echo this\? &)
cat ./logfile
आउटपुट
can anyone hear
@ Vinc17 के साथ एक टिप्पणी पर चर्चा करने के बाद, यह ध्यान देने योग्य है कि लगभग सभी GUI ऐप के कंसोल आउटपुट आम तौर पर X'tty -' कंसोल के लिए अभिप्रेत है। जब आप Xकिसी X .desktopफ़ाइल से कोई ऐप चलाते हैं, तो वह जो आउटपुट उत्पन्न करता है, उसे Xवर्चुअल टर्मिनल पर रूट किया जाता है - जो कुछ भी ऐसा है, जिससे आप Xपहले स्थान पर लॉन्च हुए थे। मैं इस tty नंबर के साथ पता कर सकते हैं $XDG_VTNR।
हालांकि अजीब - और शायद इसलिए कि मैंने अभी उपयोग करना शुरू किया है startx- मैं अब सिर्फ लिखने के लिए प्रतीत नहीं हो सकता /dev/tty$XDG_VTNR। यह भी हो सकता है (जैसा कि मुझे लगता है कि अधिक संभावना है)Xorg v1.16 के साथ लागू किए गए बहुत हालिया और कठोर बदलाव के साथ कुछ करना है जो इसे रूट विशेषाधिकारों की systemdआवश्यकता के बजाय उपयोगकर्ता सत्र के तहत चलाने की अनुमति देता है ।
फिर भी, मैं कर सकता हूँ:
alias gui='command exec >/dev/tty$((1+$XDG_VTNR)) 2>&1'
(gui; some x app &)
अब सभी some x appकंसोल आउटपुट को /dev/tty$((1+$XDG_VTNR))मेरे xtermpty के बजाय रूट किया जा रहा है । मुझे इसका अंतिम पृष्ठ किसी भी समय मिल सकता है जैसे:
fmt </dev/vcs$((1+$XDG_VTNR))
वैसे भी आउटपुट लॉग करने के लिए कुछ वर्चुअल टर्मिनल समर्पित करना सबसे अच्छा अभ्यास है। /dev/consoleआम तौर पर इसके लिए पहले से ही आरक्षित होता है, हालांकि आप ऐसा नहीं करना पसंद कर सकते हैं chownजो आपको उस पर लिखने के लिए आवश्यक है। आपके पास कुछ फ़ंक्शन हो सकते हैं जो आपको ऐसा करने में सक्षम बनाता है printk- जो मूल रूप से मुद्रण के लिए है /dev/console- और इसलिए मैं इसे इस तरह से उपयोग कर सकता हूं कि मुझे लगता है।
ऐसा करने का एक और तरीका यह होगा कि इस तरह के उद्देश्यों के लिए एक पैसा समर्पित किया जाए । उदाहरण के लिए, आप एक xtermखिड़की को खुला रख सकते हैं, ttyजब पर्यावरण चर में वहां से चलाए जा रहे आउटपुट को बचा सकते हैं , और उस मान का उपयोग गंतव्य के guiआउटपुट के रूप में कर सकते हैं । इस तरह से सभी लॉग को एक अलग लॉग विंडो में भेजा जाएगा, जिसे आप पसंद करने के बाद स्क्रॉल कर सकते हैं।
मैंने एक बार इस बारे में एक उत्तर लिखा था कि bashयदि आप रुचि रखते हैं तो इतिहास के साथ एक समान कैसे किया जा सकता है ।