题
什么是 GNU 屏幕?
解决方案
什么是 GNU 屏幕?伟大的!
嗯,一个稍微有用的答案:它允许您在一个终端中运行多个控制台应用程序或命令。有点像选项卡式终端模拟器。事实上,这正是它的本质(只是没有使用常规 GUI 工具包完成)
为什么这么棒?简单,您可以在屏幕会话中运行程序(运行 screen
它运行你的默认 shell,运行 screen myapp
它在会话中运行 myapp),点击 控制键+A (屏幕控制顺序),然后按 d (控制键+A,d) 分离。
程序一直在后台运行, 但, ,不像做 mycmd &
, ,你可以运行 screen -r
重新连接会话,一切都与您离开时一样。您可以将输入发送到命令,如果它是一个curses UI,一切仍然像“真实”终端一样工作。
它在控制台 IRC 客户端中非常流行 - 你可以运行(比如说) screen irssi
并从任何可以进行 SSH 的地方重新附加会话。
一些有用的命令:
- 控制键+A, C 在会话中创建一个新的虚拟终端(或“窗口”)
- 控制键+A, n 和 控制键+A, p 循环浏览多个窗口
- 控制键+A, 1 选择窗口 1, 控制键+A, 4 选择窗口 4 等
- 控制键+A, 控制键+A 在最后两个活动窗口之间滑动
- 控制键+A, 转移+A (大写a)允许您重命名当前窗口
- 控制键+A, ` (对我来说,那就是 转移+2 - 引号)列出窗口,您可以使用箭头并选择一个。对于“选项卡栏”设置也很有用,我将在稍后列出
我偶然发现的其他一些有用的东西:
- 使用
-U
启动屏幕时进行标记,以便它支持 Unicode(例如,screen -xU
) - 这
-x
标志允许您多次重新附加同一会话。(-r
断开现有连接) - 您可以使用状态栏做一些有趣的事情。我有要显示的设置
[ hostname ][ 0-$ bash (1*$ irssi) ][16/09 9:32]
(在主机名上运行,它有两个窗口。这是由我的 .screenrc 中的硬状态行设置的(在答案的末尾)
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}'
不隶属于 StackOverflow