如何在Bash中暂停和恢复一系列命令?

时间:2017-01-18 05:45:30

标签: linux bash unix

cmd2完成后我需要关注cmd1。我有时需要暂停cmd1

我输入

$ cmd1 && cmd2

然后按Ctrl+Z (Stop)停止cmd1。现在,cmd1已暂停,但当我恢复时,cmd2完成后,cmd1无法启动。

我输入

$ cmd1 ; cmd2

然后按Ctrl+Z (Stop)停止cmd1。现在cmd1已暂停,但会立即启动cmd2。但是,我希望仅在cmd2完成后才开始cmd1

我做了一些研究,有人在zsh中提出了一种优雅的方式,但我想知道在bash中是否有一种优雅的方式。

1 个答案:

答案 0 :(得分:10)

在子shell中运行它:

(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