कमांड चेन को कैसे बैकग्राउंड करें?


15

मैं एक कमांड चेन को बैकग्राउंड करना चाहता हूं cp a b && mv b c && rm a

मैंने करने की कोशिश की है cp a b && mv b c && rm a &लेकिन यह केवल अंतिम प्रक्रिया की पृष्ठभूमि है।

मैं एक आदेश श्रृंखला कैसे पृष्ठभूमि करूँ?

जवाबों:


22

cp a b && mv b c && rm a &सही है। &की तुलना में कम पूर्वता है &&। वास्तव &में इसके अलावा ;और न्यूलाइन की तुलना में कुछ भी कम नहीं है : &एक ही वाक्यात्मक श्रेणी में है ;, अंतर यह है कि पृष्ठभूमि में इसे चलाते ;समय कमांड सूची अग्रभूमि में &चलती है। आप इसे अपने लिए परख सकते हैं:

$ dash -c 'sleep 2 && echo waited & echo backgrounded'
backgrounded
$ waited

Pdksh, ksh93, bash, csh, tsh के साथ भी।

अपवाद zsh है, जो अजीब तरह से असंगत है। यह मैनुअल में प्रलेखित है :

यदि एक सबलिस्ट एक द्वारा समाप्त किया जाता है &,&| या &!, तो शेल बैकग्राउंड में अंतिम पाइपलाइन को निष्पादित करता है, और इसके खत्म होने का इंतजार नहीं करता है (अन्य शेल से अंतर को नोट करें जो बैकग्राउंड में पूरे सबलिस्ट को निष्पादित करता है)।

दुर्भाग्यवश, zsh श या ksh संगतता मोड में भी इस तरह से व्यवहार करता है। यह सुनिश्चित करने के लिए कि पूरे कमांड को पृष्ठभूमि में निष्पादित किया गया है, इसके चारों ओर ब्रेसिज़ या कोष्ठक डालें। कोष्ठक एक उपधारा बनाते हैं जबकि ब्रेसिज़ नहीं होते हैं, लेकिन यह अप्रासंगिक है (कुछ गोले में एक माइक्रो-ऑप्टिमाइज़ेशन के अलावा) चूंकि पृष्ठभूमि वाली कमान वैसे भी उप-संस्करण में है।

{ cp a b && mv b c && rm a; } &

8
Ùnder bash , { ... ; } &वर्तमान प्रक्रिया स्तर पर एक कांटा करते ( ... ) &हैं , जबकि एक उपखंड से एक कांटा करते हैं ... परिणाम समान है, लेकिन वैसे भी एक सूक्ष्म अंतर है।
एफ। हौरी

14

आप इसे (cp a b && mv b c && rm a )&पूरी श्रृंखला में शामिल करना पसंद कर सकते हैं।


2
और यह महत्वपूर्ण रूप से यह स्पष्ट करता है कि पूरी श्रृंखला को पृष्ठभूमि में रखा गया है, यहां तक ​​कि किसी को भी जो संचालकों से
बंधे

2
@ Gilles के जवाब के लिए मेरी टिप्पणी को देखो, मुझे लगता { ... ; }है कि एक बेहतर तरीका (तरीका) है।
एफ। हौरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.