当您在 bash 中执行耗时的操作(例如安装新软件)时,是否可以编写在操作完成后出现在提示符下的文本。
例如
想象一下跑步:
apt-get install eclipse-platform
然后,当您看到安装日志时,它将需要相当长的时间才能完成,同时我想创建 Eclipse 稍后将使用的新文件夹(工作区)。
不打开新终端(或选项卡)可以实现这个吗?
答案1
您可以在后台运行安装。这样前台就可以自由地输入其他命令。后台作业完成后,您将收到通知。
检查 apt-get 的手册页,寻找让它安静地工作而不需要写大量输出的选项。检查让它工作而不需要用户输入的选项(例如确认)
使用重定向让 apt-get 将消息和错误写入文件,使用 & 符号后缀在后台运行命令
nohup apt-get --be-quiet --dont-ask \
install eclipse-platform > agiep.out 2>agiep.err &
您可能不需要nohup
(请参阅手册页)。我发明了--be-quiet
,-dont-ask
因此请检查man apt-get
是否存在真正的等效项(如果有)。
另请参阅fg
你的 shell 的手册页。
注意:上述许多功能都依赖于 shell。在 bash、ksh 及其同类中应该没问题。
答案2
如果所讨论的程序不消耗标准输入,那么您可以输入命令,然后Enter让它们在程序完成后执行(只要没有消耗标准输入)。
答案3
有很多方法可以实现这一点。
您可以随时通过按暂停任务Ctrl + Z。然后,要在后台恢复任务,请使用命令背景. 你可以使用以下命令将任务带回前台韋克
因此,如果 apt-get 正在运行,请执行Ctrl+Z,然后运行背景.这将使其在后台运行。
您还可以在屏幕或屏风上阅读。
答案4
这可能有点过度,特别是当你运行 Gnome 或 KDE 之类的程序时,你可以有多个 bash 窗口,但你应该查看屏幕。
Screen 可让您在单个窗口中运行多个终端会话。它还允许您退出 Screen 但让后台进程继续运行,并在以后的任何时间重新连接所有这些后台进程,这样您甚至都不知道您退出了。
基本上,要启动 Screen,您需要启动终端,然后输入screen
。它会向您显示一条有关其自身的消息,只需按 Enter 即可跳过该消息。Screen 是一个功能齐全的程序,因此我只会介绍其基本功能,但这里有一些基本任务。所有这些都假设默认配置(由于您没有使用过该程序,因此应该相同)。
有一组元键必须在每次屏幕命令前按下,否则输入将直接进入显示的终端会话。默认元键是ctrl-a
。例如,要创建一个新窗口,您首先要按下 ,ctrl-a
然后按下c
有用的屏幕命令
要创建新窗口:ctrl-a c
要进入下一个窗口:ctrl-a n
返回上一个窗口:ctrl-a p
跳转到某个窗口:ctrl-a #
其中 # 是要切换到的会话编号
查看所有打开的窗口:ctrl-a "
要关闭窗口:exit
正常输入
要分离会话:ctrl-a d
要重新连接会话:启动屏幕时添加-r
选项
如何完成你要求的事情
因此,要执行您要求的操作,请按照以下步骤操作
打开终端
类型
screen
类型
apt-get install eclipse-platform
类型
ctrl-a c
运行其他命令
当您执行第 5 步时,第 3 步中的命令将继续运行。要随时检查它,只需键入ctrl-a p
。要返回到您键入其他命令的位置,请键入ctrl-a n
。完成所有操作后,您可以通过键入exit
所有窗口来完全退出屏幕和终端。但是,如果您正在执行一组命令,并希望稍后返回,只需使用 分离您的会话即可ctrl-a d
。当您想要返回并完成时,只需使用 -r 选项启动屏幕,如下所示screen -r
再次强调,这只是一个简单的示例,并没有介绍使用 screen 可以做的所有事情。但如果您在终端上做了很多工作,screen 可能是一个很棒的工具。