GNU Screen是什么?

7

What is GNU Screen?


1
我更喜欢打开几个标签页,而不是混淆同一个终端。 - Scott Stensland
1个回答

30

GNU Screen是什么?很棒!

稍微有点用的回答:它允许您在一个终端中运行多个控制台应用程序或命令。有点像带有选项卡的终端仿真器。事实上,这正是它所具备的(只不过没有使用常规 GUI 工具包)。

为什么它如此伟大?简单,您可以在屏幕会话中运行程序(运行 screen 会运行您的默认 shell,运行 screen myapp 会在会话中运行 myapp),然后按下 ctrl+a(屏幕控制序列),再按下 dctrl+ad)进行分离。

该程序在后台运行,但是,与执行 mycmd & 不同的是,您可以运行 screen -r 重新连接会话,并且一切都与您离开时相同。如果它是一个 Curses UI,则可以发送输入到该命令,一切仍然像“真实”终端一样工作。

它在控制台 IRC 客户端中非常受欢迎 - 您可以运行(例如)screen irssi,并从任何您可以通过 SSH 连接的地方重新连接会话。

以下是一些有用的命令:

  • ctrl+ac 创建一个新的虚拟终端或“窗口”在会话中
  • ctrl+anctrl+ap 在多个窗口之间切换
  • ctrl+a1 选择窗口 1,ctrl+a4 选择窗口 4 等等
  • ctrl+actrl+a 在最后两个活动窗口之间切换
  • ctrl+ashift+a(大写字母 a)允许您重命名当前窗口
  • ctrl+a`(对我来说,那是shift+2 - 引号)列出窗口,您可以使用箭头并选择一个。还可以与我下面要列出的“选项卡栏”设置一起使用

我偶然发现的其他一些有用的东西:

  • 在启动screen时使用-U标志以支持Unicode(例如,screen -xU
  • -x标志允许您多次重新连接同一会话。(-r断开现有连接)
  • 您可以在状态栏上做有趣的事情。我将设置为显示[ 主机名 ][ 0-$ bash (1*$ irssi) ][16/09 9:32](运行在主机名上,它有两个窗口。这是由我的.screenrc中的hardstatus行设置的(答案末尾)
startup_message off
vbell off
hardstatus alwayslastline
hardstatus string '%{gk}[ %{G}%H %{g}][%= %{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%?%= %{g}]%{=y C}[%d/%m %c]%{W}'

1
与执行 mycmd & 不同,实际上你可以使用 fg 命令将一个进程从后台调回前台,同时也可以使用 ctrl+z 命令将其放回后台。 - naught101
2
@naught101:当然,这将把它放在后台,但它仍然附加在终端上。关闭终端窗口或断开与服务器的连接,进程也会被关闭。screen通过将进程运行的部分与用户交互发生的部分分离来避免这种情况。 - Piskvor left the building

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接