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

Lan*_*ang 5 unix linux bash

我有完成cmd2后需要遵循的cmd1.我cmd1有时需要停顿一下.

我输入

$ cmd1 && cmd2
Run Code Online (Sandbox Code Playgroud)

然后按Ctrl+Z (Stop)停止cmd1.现在,cmd1暂停但是当我恢复时,它没有cmd2在完成后开始cmd1.

我输入

$ cmd1 ; cmd2
Run Code Online (Sandbox Code Playgroud)

然后我按下Ctrl+Z (Stop)停止cmd1.现在cmd1暂停,但它立即开始cmd2.但是,我希望cmd2cmd1完成之后才开始.

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

cod*_*ter 10

子shell中运行它:

(cmd1 && cmd2)
Run Code Online (Sandbox Code Playgroud)

例:

$ (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
Run Code Online (Sandbox Code Playgroud)

  • @codeforester,我不明白为什么它需要一个子shell? (2认同)