什么是GNU Screen?
什么是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,n和ctrl+ 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}'