我的终端在处理上一个命令时如何接受输入?

我的终端在处理上一个命令时如何接受输入?

我在个人笔记本电脑和学校计算机上都使用 Ubuntu Linux。在我的个人笔记本电脑上,我希望复制学校计算机的行为,其中终端在处理先前的命令时接受用户输入。例如,在执行时git commit -m "a commit message",我希望能够git push在第一个命令仍在处理时输入。我研究了用户输入的原始模式和规范模式,但尚未完全掌握它们的工作原理或如何实现它们。

答案1

第一个命令运行时键入的任何内容都将作为下一个命令进行缓冲。

例外情况是如果第一个命令从标准输入读取,因为它将读取您的预先输入。您可以通过重定向第一个命令的标准输入来避免这种情况。

command1 < /dev/null
command2

我认为您的示例命令不应该发生这种情况。git commit通常会提示输入提交消息,但该-m选项应该阻止这种情况。但尝试一下吧,不会有什么坏处。

答案2

我认为终端在执行其他终端时总是接受额外的输入(除非您正在运行使用终端的程序)。在您的示例中,它将接受输入,但仅在git commit完成时执行它。

PS:我在我的电脑上尝试了它,git push并且在它运行时使用cd ..git commit速度太快而无法测试)并且它有效。

答案3

使用分号:

git commit -m "foo" ; git push

这会提交一条消息,然后推送它,无论提交是否成功。

或者,如果您只想在提交成功时推送,请使用以下命令连接命令&&

git commit -m "foo" && git push

相关内容