2017-01-18 12 views
5

Mam cmd2, który musi nastąpić po zakończeniu cmd1. Czasami muszę przerwać cmd1.Jak zawiesić i wznowić sekwencję poleceń w Bash?

Po wpisaniu w

$ cmd1 && cmd2 

a następnie naciśnij Ctrl+Z (Stop) zatrzymać cmd1. Teraz cmd1 jest wstrzymany, ale po wznowieniu nie rozpoczyna się cmd2 po zakończeniu cmd1.

Po wpisaniu w

$ cmd1 ; cmd2 

a potem naciśnij Ctrl+Z (Stop) zatrzymać cmd1. Teraz cmd1 jest wstrzymany, ale natychmiast rozpoczyna się cmd2 i chcę rozpocząć cmd2 dopiero po zakończeniu cmd1.

Zrobiłem kilka badań i ktoś zasugerował elegancki sposób w zsh, ale zastanawiam się, czy istnieje elegancki sposób robienia tego w bash.

+0

Podobne: https://stackoverflow.com/questions/13600319/bash-run-one-command-after-another -even-if-i-suspend-the-first-one-ctrl-z – codeforester

Odpowiedz

9

uruchomić w podpowłoce:

(cmd1 && cmd2) 

przykład:

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

Dzięki! Nie wiedziałem, że to takie łatwe i przemyślane! Dzięki za pomoc. –

+2

@codeforester, nie rozumiem, dlaczego potrzebuje podpowłoki? – sat

+0

Myślę, że bufor poleceń zostanie przepłukany, gdy zatrzymamy się i wznowimy. W przypadku podpowłoki ma już pełną linię poleceń i nie odczytuje jej z urządzenia wejściowego. Zgaduję. – codeforester

Powiązane problemy