dbr*_*dbr 27

什么是GNU Screen?大!

嗯,一个稍微有用的答案:它允许您在一个终端中运行多个控制台应用程序或命令.有点像标签式终端模拟器.事实上,这正是它的原因(只是没有使用常规的GUI工具包)

它为什么这么棒?很简单,您可以在屏幕会话中运行程序(运行screen并运行默认shell,运行screen myapp并在会话中运行myapp),按ctrl+ a(屏幕控制序列)然后按d(ctrl+ a,d)分离.

该程序在后台继续运行,与之不同的是mycmd &,您可以运行screen -r以重新连接会话,一切都在您离开时.您可以向命令发送输入,如果它是一个curses UI,一切仍然可以像它是一个"真正的"终端一样工作.

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

一些有用的命令:

  • ctrl+ a,c在会话中创建一个新的虚拟终端(或"窗口")
  • ctrl+ a,nctrl+ a,p通过多个窗口周期
  • ctrl+ a,1选择窗口1,ctrl+ a,4选择窗口4,依此类推
  • ctrl+ a,ctrl+ a在最后两个活动窗口之间轻弹
  • ctrl+ a,shift+ a(大写a)允许您重命名当前窗口
  • ctrl+ a,`(对我来说,那是shift+ 2- 引号)列出了窗口,你可以使用箭头并选择一个.对于"标签栏"设置也很有用,我将在一秒钟内列出

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

  • -U启动屏幕时使用该标志,以便它支持Unicode(例如,screen -xU)
  • -x标志允许您多次重新连接同一会话.(-r断开现有连接)
  • 您可以使用状态栏执行有趣的操作.我有我的设置显示[ hostname ][ 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}'
Run Code Online (Sandbox Code Playgroud)

  • @naught101:当然,这将它放在后台,*但它仍然连接到终端*。关闭终端窗口,或断开与服务器的连接,进程也会关闭。`screen` 通过将进程运行的部分与用户交互发生的部分分开来避免这种情况。 (2认同)