在 bash 工作时进行写入

在 bash 工作时进行写入

当您在 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选项

如何完成你要求的事情

因此,要执行您要求的操作,请按照以下步骤操作

  1. 打开终端

  2. 类型screen

  3. 类型apt-get install eclipse-platform

  4. 类型ctrl-a c

  5. 运行其他命令

当您执行第 5 步时,第 3 步中的命令将继续运行。要随时检查它,只需键入ctrl-a p。要返回到您键入其他命令的位置,请键入ctrl-a n。完成所有操作后,您可以通过键入exit所有窗口来完全退出屏幕和终端。但是,如果您正在执行一组命令,并希望稍后返回,只需使用 分离您的会话即可ctrl-a d。当您想要返回并完成时,只需使用 -r 选项启动屏幕,如下所示screen -r

再次强调,这只是一个简单的示例,并没有介绍使用 screen 可以做的所有事情。但如果您在终端上做了很多工作,screen 可能是一个很棒的工具。

相关内容