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