如果你想在第一个命令完成后执行一个命令,然后再执行另一个命令,你可以执行
command1 &
它打印正在执行的进程的 PID command1
。
command1
然后你可以考虑完成后要做什么并执行:
wait [PID printed by the previous command] && command2
command1
然而,这只适用于同一个终端窗口,如果打印输出,它会变得非常非常混乱。如果您打开一个新的终端窗口并尝试等待,您会看到如下内容:
$ wait 10668
bash: wait: pid 10668 is not a child of this shell
是否有一个终端模拟器支持等待程序,而不必在当前执行命令的输出中写入下一个命令,而无需丢弃第一个命令的输出(例如将其通过管道传输到/dev/null
)?
它不必通过wait
或类似的东西来工作。右键单击并选择“当前命令返回后执行”就可以了。
我的意思不是简单地连接命令,而是能够运行命令并然后决定在该任务完成后立即运行什么。
答案1
通常,在给出一个长时间运行的命令后,当您想要准备随后运行的下一个命令时,您可以使用 shell作业控制来实现它。例如,你已经给予了command1
,而不是给予&
,然后你想要给予command2
,所以你暂停通过键入当前正在运行的命令control-z。您现在再次出现 shell 提示符,因此您输入
fg; command2
并且fg
将恢复您的第一个命令,当它完成时,shell 将启动您的第二个命令。
如果您确实使用 启动 command1 &
,那么它会在后台运行。您可以使用 将其带到前台fg
,然后将其暂停,然后像以前一样。
答案2
如果您只想在前一个命令完成后立即运行命令,可以将它们分开,;
如下所示:
command1 ; command2
或者,如果您只想在第一个命令返回时运行第二个命令true
,如下所示:
command1 && command2