如何在执行上一个命令时编写下一个命令?

如何在执行上一个命令时编写下一个命令?

在 bash(通常使用 git)中工作时,我经常遇到的情况是,我启动了一些命令,当该命令正在执行时(这可能需要一段时间),我想开始编写下一个要立即执行的命令,而无需等待以便完成上一个命令。如果我在上一个命令仍在执行时完成下一个命令的编写,则下一个命令应该等待上一个命令完成才能真正开始。

到目前为止我发现的不充分的选择是:

  1. 开始编写下一个命令。

    问题是我是盲写的:我可以输入下一个命令,但我看不到我正在输入的内容。当涉及制表符完成时,这尤其成问题,因为它的行为“不可预测”(例如,我很难猜测是否cd sTab会扩展为cd src)。

  2. 使用在后台执行上一个命令&

    这意味着上一个命令的输出与我正在编写的命令交错。最终结果是,如果前面的命令输出足够频繁,那么它几乎和选项 #1 一样糟糕。

  3. 使用隐藏前一个命令的输出> /dev/null

    这样做的问题是前一个命令的输出通常很重要,尤其是在失败的情况下。

重申一下,有没有办法获得这样的环境:

  • 我可以在上一个命令执行时编写下一个命令
  • 我可以看到我正在编写的命令
  • 制表符补全正常工作
  • 上一个命令的输出是可见的

答案1

你有两个选择:

  • screen实用程序虽然不随某些 Linux 发行版一起提供。默认情况下,Solaris (Unix) 中也不包含它。

    以 Centos 为例:

    yum install screen
    

    这是一个简短教程屏幕实用程序的使用情况。

  • 命令nohup;相应地重定向 stdout 和 stderr:

    例子:

    nohup command & 
    

答案2

您可以使用以下命令将当前运行的命令放入后台:

  • Ctrl-Z暂停该过程,并且
  • bg在后台恢复它。

然后您会收到提示,您可以开始输入下一个命令。

不过,上一个命令的 stdout 和 stderr 仍会转到您的终端。

相关内容