`&> / Dev / null &` की कई पंक्तियों को छोटा या मर्ज करें


11

हर बार मशीन शुरू करने के बाद, मैं निम्नलिखित कार्यक्रम चलाता हूं:

$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null  &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &

बोझिल &> /dev/null &... मैं तर्क को छोटा कैसे कर सकता हूं?


2
आप उन सभी या अधिकांश कार्यक्रमों को अपने स्टार्टअप एप्लिकेशन में डाल सकते हैं ।
अगली सूचना तक रोक दिया गया।

महान, शानदार अनुप्रयोग। त्रुटियां आम तौर पर अशुभ दुर्घटना का कारण बनती हैं, इसलिए मैं उन्हें tmux सर्वर से शुरू करता हूं। @ डेनिसविलियम्सन
कलन

जवाबों:


12

भाग का &> /dev/nullमतलब है आउटपुट पुनर्निर्देशन। आप एक ही फाइल में एक ब्लॉक में कई कमांड्स को एक ही फाइल में रीडायरेक्ट कर सकते हैं:

#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs  &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null

हालाँकि, एक ही चीज़ का उपयोग पृष्ठभूमि में व्यक्तिगत कमांड शुरू करने के लिए नहीं किया जा सकता है ( &)। &ब्लॉक के बाद डालने का मतलब होगा कि पृष्ठभूमि में एक स्क्रिप्ट के रूप में पूरे ब्लॉक को चलाना।


ध्यान दें कि क्या &>वाक्य रचना बहिष्कृत है और साथ प्रतिस्थापित किया जाना चाहिए >/dev/null 2>&1 wiki-dev.bash-hackers.org/scripting/obsolete
multithr3at3d

4
POSIX के साथ असंगत एक बहुवाद 3d3 @ @? ज़रूर! पदावनत या अप्रचलित? नहीं , इस सूची के तीन लेखकों ने आखिरी बार 2015 में संपादित किए गए विचार के बावजूद। यह एक संक्षिप्त रूप है, और कमांड लाइन को छोटा करना बिल्कुल ओपी का लक्ष्य है। अगर कोई #!/bin/bashपोर्टेबिलिटी के लिए जाँच किए बिना किसी अलग शेल में स्क्रिप्ट चलाता है तो यह निश्चित रूप से बैश की गलती नहीं है अगर यह काम नहीं करता है।
मिठाई

12

मैंने एक फ़ंक्शन लिखा और .bashrcअपने टर्मिनल से अलग की गई चीज़ों को चलाने के लिए इसे रखा :

detach () 
{ 
    ( "$@" &> /dev/null & )
}

... और फिर:

detach google-chrome
detach xdg-open ~/Reference/topic_regex.md

और क्योंकि मैं आलसी हूँ, मैंने इसके लिए एक शॉर्टकट भी लिखा है xdg-open:

xo () 
{ 
    for var in "$@"; do
        detach xdg-open "$var";
    done
}

क्योंकि पूरी xdg-openतरह से एक तर्क की उम्मीद है, फ़ंक्शन xoसभी दिए गए तर्कों पर ध्यान केंद्रित करता है और xdg-openप्रत्येक के लिए अलग-अलग कॉल करता है ।

इसके लिए अनुमति देता है:

detach google-chrome
xo . ~/Reference/topic_regex.md

5

आप बाद के सभी आदेशों के लिए आउटपुट पुनर्निर्देशित कर सकते हैं

exec 1>/dev/null
exec 2>/dev/null

3

आप एक लूप बना सकते हैं और इसे तर्कों के रूप में कमांड दे सकते हैं:

for i in google-chrome "xdg-open ." "code ~/Programs/"; do
  $i &
done &>/dev/null

ध्यान दें कि इस तरह से बिल्कुल घुंघराले ब्रेसिज़ के साथ उप-दृष्टिकोण के साथ ही आउटपुट को समेटना संभव है और उन सभी को एक ही बार में पुनर्निर्देशित किया जा सकता है।


3

मैंने /dev/nullपुनर्निर्देशन को छोटा करने के लिए एक छोटे पथ के साथ एक विशेष फ़ाइल बनाई । मैंने /nनई फ़ाइल के पथ के रूप में उपयोग किया है :

sudo mknod -m 0666 /n c 1 3

इस तरह आप व्यक्तिगत लाइनों को छोटा कर सकते हैं जैसे:

google-chrome &>/n &

स्रोत: कैसे बनाएं / देव / अशक्त?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.