2017-01-18 67 views
5

cmd1 tamamlandıktan sonra takip etmesi gereken cmd2 var. Bazen cmd1'u durdurmam gerekiyor.Bash'de nasıl bir komut dizisini askıya alır ve devam ettiririm?

Ben

$ cmd1 && cmd2 

yazabilir ve ardından cmd1 durdurmak için Ctrl+Z (Stop) basın. Şimdi, cmd1 duraklatıldı, ancak devam ettiğimde, cmd1 tamamlandıktan sonra cmd2 başlatılamıyor.

Ben

$ cmd1 ; cmd2 

yazarken ve sonra cmd1 durdurmak için Ctrl+Z (Stop) basın. Şimdi cmd1 duraklatıldı ancak hemen cmd2'u başlatıyor vetamamlandıktan sonra cmd2'u başlatmak istiyorum.

Bazı araştırmalar yaptım ve birisi zsh'da zarif bir yol önerdi, ancak bash içinde yapmanın zarif bir yolu olup olmadığını merak ediyorum. bir kabuktaki

+0

İlgili: https://stackoverflow.com/questions/13600319/bash-run-one-command-after-another -even-if-i-suspend-ilk-one-ctrl-z – codeforester

cevap

9

Run it:

(cmd1 && cmd2) 

Örnek:

$ (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

Teşekkürler! Bilmiyordum, bu kadar kolay ve kendimi eleştirdim! Yardım için teşekkürler. –

+2

@codeforester, Bunun neden bir alt kabuğa ihtiyacı olduğunu anlamadım mı? – sat

+0

Durduğumuzda ve devam ettiğimizde komut arabelleğinin temizlendiğini düşünüyorum. Subshell durumunda, zaten tam komut satırına sahiptir ve bir giriş cihazından okumaz. Bu benim tahminim. – codeforester

İlgili konular