我在个人笔记本电脑和学校计算机上都使用 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