例如,我打字sudo apt-get update
,然后几分钟后就会出现一长串内容。
如果我想摆脱这种令人厌烦的更新并再次控制 bash 命令行(而不退出原始命令),
是否有热键或类似的东西可以做到这一点?
答案1
您可以apt-get
暂时停止Ctrl-Z然后重新启动工作在背景中bg
命令。
$ apt-get foo bar ...
^Z
bash: suspended apt-get
$ bg
bash: continued apt-get
$
apt-get
但是,当您这样做时,您将继续从终端上获取输出。它不是在您已经启动命令之后可以停止它(除了使用调试器的肮脏黑客之外)。不过,您可以在此处运行其他命令。当作业停止时,它仍然存在,但没有运行,因此它不会取得任何进展,但您也不会看到任何输出。
您可能会发现有用的是screen
或者tmux
命令。它们允许您在同一物理终端内使用不同终端运行多个会话。如果您使用的是 X,则可以运行其他终端模拟器,或者在当前的选项卡中创建一个新选项卡。无论采用哪种方式,您都可以apt-get update
在一个 shell 中运行,然后切换到另一个 shell 继续工作。
答案2
对于这个特定的命令,您通常可以假设它在大多数情况下都能正常工作而不会出现错误。在这种情况下,您最好像这样运行它:
sudo apt-get update > ~/.aptget.update.log &
您还可以使用括号隐藏所有输出:
(sudo apt-get update > ~/.aptget.update.log &)
可以使用此行作为别名,以便您可以方便地使用:
alias apt-update="(sudo apt-get update > ~/.aptget.update.log &)"
这使您可以仅使用“apt-update”运行命令。将其放入您的~/.bashrc
文件中,以便每次登录时自动运行它。
然后,您还可以添加自定义消息来提醒您它正在做什么:
alias apt-update="echo \"Running apt-get update in the background. Wait a few moments for it to finish.\" || (sudo apt-get update > ~/.aptget.update.log &)"