我能否告诉Bash在当前执行的命令完成后运行另一个命令?

8

如果我已经启动了一个长时间运行的进程,我能否“排队”一个命令以在其之后立即运行?

我知道如果我从头开始就可以使用cmd1 && cmd2语法来做到这一点,但如果cmd1已经在运行,该怎么办?

3个回答

13

您可以按C-z停止当前前台任务,然后键入"fg %%; some-other-command"以恢复任务并在此之后运行另一个命令。


1
有关 %% 的详细信息,请参见作业标识符表格 - SergA
实际上这是正确的答案,而不是所选的答案。 - pal

7

如果当前运行的命令不需要读取输入,您可以在同一个窗口中直接键入该命令。Bash将在当前命令完成后读取输入并运行该命令。


1
是的,@F.Hauri,那就是“如果当前运行的命令没有读取输入”的部分。 :) - Mark Reed

0

你可以使用 ';' 符号。请查看此链接:

https://bbs.archlinux.org/viewtopic.php?id=104472

你可以使用以下任意一种方式:

cmd1 && cmd2

当 cmd1 成功执行后,cmd2 将会被执行。或者:

cmd1 ; cmd2

无论 cmd1 是否成功执行完成,cmd2 都将会被执行。


3
这并没有回答问题,他说cmd1已经在运行了。 - Keith Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接