前一个命令完成后执行该命令

前一个命令完成后执行该命令

是否有一个终端仿真器允许用户在当前运行的命令终止后执行命令?

我正在寻找软件,而不是寻找如何连接命令的说明(例如通过&&;)。只是我经常想在其他事情完成后再做某件事,但又不想提前计划好一切。一个名为“当前命令完成后执行”的小上下文菜单项可以打开一个新的终端窗口,而这个窗口正是这样做的,这真是太棒了。

答案1

我假设你正在使用 Bash CLI。至少有两种方法可以做到这一点,具体取决于你想提前计划多少。

如果您键入一个命令和enter,然后决定在完成后运行其他命令,您可以执行以下操作:

001 $ date; sleep 10
002 Mon, Jan 25, 2016  3:08:35 PM
003 tty; date
004 $ tty; date
005 /dev/pty2
006 Mon, Jan 25, 2016  3:08:45 PM

笔记:

  • 添加行号(“001 ...”)
  • 第 001 行:由于 ,两个命令按顺序运行;,第二个命令是长时间运行的
  • 第 002 行:第 001 行 'date' 的直接输出,供参考
  • 第 003 行:当第 001 行中的“sleep”命令仍在运行时,用户输入了其他命令,输入的内容会被回显,但直到“sleep”完成才会被解释
  • 第 004 行:$出现提示符,标记第 001 行第二条命令的执行结束,其余部分则是第 003 行的重新回显。
  • 第 005 行:第 003 行输入的“tty”命令的输出
  • 第 006 行:第 003 行输入的“date”命令的输出,与第 002 行进行比较

但是,如果您事先知道在初始命令之后您将想要启动其他操作,但还不知道是什么,那么您可以明确地等待它:

006 $ date; sleep 20 &
007 Mon, Jan 25, 2016  3:13:52 PM
008 [1] 504840
009 $ wait 504840; tty; date
010 [1]+  Done                    sleep 20
011 /dev/pty2
012 Mon, Jan 25, 2016  3:14:12 PM

笔记:

  • 第 006 行:以“date”作为参考,然后使用 final 将“sleep”命令推送到后台&
  • 第 007 行:第 006 行的“date”输出,供参考
  • 第 008 行:&第 006 行的输出,给出“睡眠”命令的 PID
  • 第 009 行:‘wait’将等待名为 PID 的进程完成
  • 第 010 行:第 006 行的“sleep”完成,然后将解释“tty; date”
  • 第 011 行:第 009 行‘tty’的输出
  • 第 012 行:第 009 行的“date”输出,与第 007 行进行比较

答案2

您可以在正在执行当前命令的 shell 窗口中键入或粘贴新命令,shell 将在当前命令完成后看到它并执行它。

无需额外的菜单条目。

例如:

$ command1
command2
$ $

(打印重复的提示是因为 shell 会在command1启动之前执行完后提示你command2)。

注意如果你command1kill,然后command2立即执行,但如果你Ctrl-C在这个 shell 中输入,这将中止两个都命令。

相关内容