如果我在bash提示下发出此消息:$ cmd_1; CMD_2
cmd_1位于前台。我是否可以在不停止cmd_1的情况下阻止cmd_2运行?直到cmd_1结束,此时cmd_2将启动,然后为时已晚。
我不认为这是可能的,但可能有工作控制?
-Z $ bg是否将两个命令都推入bg?更确切地说,cmd_1是否转到bg而cmd_2是(在哪里?“挂起的背景?”,如@ cmd?)仍在等待cmd_1退出?
没有条件地调用命令,ala“cmd_1&& cmd_2”,也没有调用后面的命令。 cmd_1在fg中运行,cmd_2尚未执行。
这里的facepalm是cmd_1需要很长时间才能完成,cmd_2是破坏性的,我真的不想打断并重新执行cmd_1。我只想cmd_1完成而cmd_2完全没有运行。
我可能会因cmd_2移动到cmd_2.sav而导致cmd_2失败,直到cmd_1完成并导致“-bash:cmd_2:command not found”,但我希望有一个更优雅的解决方案。在cmd_1完成之前,其他人可能会使用cmd_2。 (是的,我可以使用用户测试或某些东西在cmd_2包装器中包装cmd_2.real,但这种方式很疯狂)。
答案 0 :(得分:1)
可能有更好的方法,但这可行:
fg
以恢复cmd_1操作。如果您想提前尝试这一点以确保您获得的行为符合您的期望,请使用sleep
和echo
命令的组合进行练习。即,从终端运行sleep 10; echo "hello"
。按Control-Z暂停睡眠命令,输出“hello”。键入fg
会恢复睡眠。
答案 1 :(得分:0)
在这种特殊情况下,只需添加...
echo "Press a key to begin... ${0}"
read
cmd_2
的开头。这样你就不会严重妨碍想要使用cmd_2
的人,你就有机会在它破坏你想要保存的东西之前杀掉它。