1. 介绍

官网介绍

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. Each virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows. When screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would. Then, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other. Programs continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.

Screen 是全屏幕窗口管理器,它在多个进程(通常是交互式 Shell)之间,多路复用物理终端。每个虚拟终端提供 DEC VT100 终端的功能,另外,还提供来自 ANSI X3.64(ISO 6429)和 ISO 2022 标准(比如,插入/删除行,以及支持多种字符集)的若干控制功能。每个虚拟终端有一个滚动历史缓冲区,并且拥有允许用户在窗口之间移动文本区域的拷贝-粘贴机制。当调用 screen 命令时,它创建带有 Shell(或指定命令)的单个窗口,然后可以像平常一样使用该程序。然后,可以随时在其中使用其它程序创建新(全屏幕)窗口(包括更多 Shell),杀死当前窗口,查看活跃窗口列表,打开/关闭输出日志,在窗口之间拷贝文本,查看滚动历史,在窗口之间切换等。所有窗口彼此完全独立地运行它们的程序。程序持续运行到它们的窗口当前不可见,甚至当从用户终端脱离整个 Screen 会话时。

Screen 以会话(Session)为基础,向用户提供终端复用功能。会话是后台运行的程序,在其中可以执行命令,创建新窗口等,不同的会话包含不同的运行内容。当终端连接(attach)到特定会话时,终端将显示该会话的信息,包括会话中包含的窗口、执行的命令及输出等。当终端脱离(detach)当前会话时,终端将不再显示会话的内容,但会话仍然在后台独立地运行,仅当会话中没有正在运行的程序时(包括窗口中运行的 Shell 程序),会话自动结束。


2. 选项

常用的选项包括:


3. 基本操作

可以通过以下方式使用 Screen 的功能:

在 Screen 创建的窗口中,默认情况下,用户的按键直接作为终端的输入,仅当用户输入特定的命令前缀(Prefix)时,才会根据 Screen 与按键的绑定情况将后续的输入解释为特定的 Screen 操作。 Screen 默认的命令前缀为 CTRL + a,在输入命令前缀后,用户键入 Screen 支持的功能按键,即可执行指定的 Screen 操作。


4. 窗口管理

只能在已连接的会话中,进行窗口的管理。常用的窗口管理方式有两种:

由于 Screen 会话提供的窗口一般用于执行用户命令,故在命令行输入命令的方式不总是可用。下面是说明各操作的功能的表格(已省略命令前缀 CTRL + a)。注意,也可以通过在命令行输入命令的方式实现下述窗口管理功能,具体细节请参考 Screen 的 man 文档。

分类操作功能
创建和切换c(create)创建带有 Shell 的新窗口,并且切换至新窗口
创建和切换k(kill)杀死当前窗口,切换到下一个窗口。如果当前窗口是最后一个窗口,那么终止会话
创建和切换d(detach)脱离当前会话
创建和切换i(info)显示当前窗口的信息
创建和切换w(windows)显示所有窗口的序号
创建和切换"显示所有窗口,以供切换
创建和切换num(0 - 9 之间的数字)切换至序号为 num 的窗口
创建和切换n(next)切换到下一个窗口
创建和切换p(previous)切换到前一个窗口
划分和管理S(split)将当前窗口水平划分成两个窗口
划分和管理|将当前窗口垂直划分成两个窗口
划分和管理TAB在不同区域间顺序切换
划分和管理Q(only)删除当前区域外的所有区域
划分和管理X(eXchange)删除当前区域。交换当前区域和下一个区域的位置,从而实现删除当前区域的效果
辅助功能C(clear)清屏
辅助功能H(Hardcopy)开始/结束记录当前窗口的输出,输出被保存在名为 "screenlog.n" 文件中
辅助功能?显示按键与功能的绑定
辅助功能[进入复制模式
辅助功能]将复制模式中复制的内容粘贴
辅助功能x(Lock)锁定屏幕,需要输入密码才能解锁

5. 其它快捷键

5.1. 拷贝/粘贴

创建会话:

在窗口中,输入命令:

同时按 CTRL + a,然后松开,再按 [ 或 ESC,进入拷贝模式。

按 h(左,或 Page-Left)、j(下,或 Page-Down)、k(上,或 Page-UP)、l(右,或 Page-Right),将光标移动到开始位置。

按 SPACE(空格),开始复制。

按 h(左,或 Page-Left)、j(下,或 Page-Down)、k(上,或 Page-UP)、l(右,或 Page-Right),将光标移动到结束位置。

按 ENTER(回车),执行复制,并且退出拷贝模式。

按 CTRL + a,松开后,按 ],进行粘贴。

5.2. 查看滚动历史

先进入拷贝模式,然后将光标移动到想要查看的位置,最后按 q 放弃复制模式。

5.3. 光标移动

快捷键功能
CTRL + a + a先按 CTRL + a,松开后,再按 a。移动到行首
CTRL + e(end)移动到行尾
CTRL + f(forward)向前移动一个字符
CTRL + b(back)向后移动一个字符
CTRL + k(kill)删除光标到行尾
CTRL + u(unix)删除光标到行首
CTL + y(yank)粘贴之前删除的文本