2017-01-18 6 views
5

मेरे पास cmd2 है जो cmd1 पूरा करने के बाद पालन करने की आवश्यकता है। मुझे कभी-कभी cmd1 को रोकना होगा।मैं बैश में आदेशों का अनुक्रम कैसे निलंबित और फिर से शुरू करूं?

जब मैं

$ cmd1 && cmd2 

में लिखते हैं और फिर Ctrl+Z (Stop) प्रेस cmd1 को रोकने के लिए। अब, cmd1 रुक गया है लेकिन जब मैं फिर से शुरू करता हूं cmd1 के पूरा होने के बाद cmd2 शुरू नहीं होता है।

जब मैं

$ cmd1 ; cmd2 

में लिखते हैं और फिर मैं Ctrl+Z (Stop) प्रेस cmd1 को रोकने के लिए। अब cmd1 रुक गया है लेकिन यह तुरंत cmd2 शुरू होता है, और मैं केवल समाप्त होने के बाद cmd2 शुरू करना चाहता हूं।

मैंने कुछ शोध किया और किसी ने zsh में एक शानदार तरीका सुझाया लेकिन मुझे आश्चर्य है कि bash में ऐसा करने का एक शानदार तरीका है या नहीं। एक subshell में

+0

संबंधित: https://stackoverflow.com/questions/13600319/bash-run-one-command-after-another -वेवन-अगर-i-suspend-the-first-one-ctrl-z – codeforester

उत्तर

9

भागो यह:

(cmd1 && cmd2) 

उदाहरण:

$ (sleep 5 && echo 1)      # started the command chain 
^Z 
[1]+ Stopped   (sleep 5 && echo 1) # stopped before `sleep 5` finished 
$ fg           # resumed 
(sleep 5 && echo 1) 
1           # `sleep 5` finished and `echo 1` ran 
+1

धन्यवाद! मुझे नहीं पता था कि यह आसान है और खुद को खत्म करो! सहायता के लिए धन्यवाद। –

+2

@codeforester, मुझे समझ में नहीं आया कि इसे सबहेल की आवश्यकता क्यों है? – sat

+0

मुझे लगता है कि जब हम रुकते हैं और फिर से शुरू करते हैं तो कमांड बफर फ़्लश हो जाता है। सबहेल के मामले में, इसमें पहले से ही पूर्ण कमांड लाइन है और यह इसे इनपुट डिवाइस से नहीं पढ़ रहा है। यह मेरा अनुमान है। – codeforester

संबंधित मुद्दे