screen 是一个特殊的模拟终端软件,利用它能在一个终端窗口里模拟出多个终端,
并且能分割窗口、类似 VI 的方式搜索和拷贝屏幕输出,最重要的是利用
screen,可以让任务后台执行,退出系统,下次登录恢复后跟以前状态一样。

在前文中已经介绍了如何安装screen,详见:。
现在对screen的用法做一简明讲解。

1) 运行

执行 screen 命令就是新开一个 screen 会话,其它常用命令:

列举当前存在的 screen 会话

$ screen -ls
[2]dieken@tsg:~$ screen -ls
There is a screen on:
12212.pts-24.tsg (Detached)
1 Socket in /var/run/screen/S-dieken.

括号中的 Detached 表示这个会话在后台运行,用 screen -R 恢复它。
如果有多个 Detached 的会话,则用 screen -R 12212 恢复它;如果突然
掉线导致那个会话还处于 Attached 状态,则用 screen -dR 12212 恢复。

2) 退出
screen 内会执行 shell,退出所有 shell 后 screen 就退出了,或者
在 screen 里头按 Ctrl-a d 来 detach 这个 screen 会话,以后就能
用 screen -R 恢复这个会话。

3) 帮助:
Ctrl-a ? 或者 man screen

4) 窗口操作:
Ctrl-a c 开新窗口(退出里头的 shell 比如用 exit 或者 ctrl-d 则退出此窗口)
Ctrl-a Ctrl-a 切换窗口
Ctrl-a 0 到 9 直接切换到某个窗口,窗口编号能用 Ctrl-a ” 看到,这个命令
会列出所有窗口,按上下方向键或者类似 vi 的 hj,高亮然后回车选择

5) 窗口分割,可以利用这个功能一边编辑一边查看编译结果。
Ctrl-a S 分割窗口
Ctrl-a j 切换到下一个窗口
Ctrl-a k 切换到上一个窗口
Ctrl-a b 切换到最底下的窗口
Ctrl-a t 切换到最顶上的窗口
然后用 4 中的切换操作让新分割出来的窗口显示内容

Ctrl-a X 关闭当前窗口(关闭的只是分割出来的窗口,并不是 4 中新建的窗口)

6) 记录屏幕输出
Ctrl-a H 类似 script 程序,记录屏幕上显示的内容,再按此快捷键停止记录。

7) 回滚、搜索、拷贝屏幕输出
Ctrl-a ESC 或者 Ctrl-a [ 进入回滚、拷贝模式

进去此模式后就可以用 vi 的命令移动光标:h, j, k, l, 0, ^, $, H, M, L,
G, |, w, b, e, B, E, Ctrl-u, Ctrl-d, Ctrl-b, Ctrl-f, g, %

拷贝:在起始点和终点各按一次空格键,这就拷贝了高亮文字并退出回滚、拷贝
模式,进入正常模式,用 Ctrl-a ] 就可以粘贴。

搜索:类似 vi 的 / 和 ? 命令,或者 Emacs 的 C-a s 和 C-r 命令

8) 锁住 screen
Ctrl-a x 需要输入密码才能继续使用

9) 配置,screen 默认用 Ctrl-a 作为快捷键前缀,这跟命令行编辑的 Ctrl-a 跳到
行首冲突,因此可以在 ~/.screenrc 里配置为 Ctrl-j:

defescape ^Jj
escape ^Jj

建议在 ~/.bashrc 中设置 PS1 的后面一行加入

PS1=”\\n[\$SHLVL]$PS1″

这句,这样能容易看出当前的 shell 是否嵌套在其它 shell 里运行的。

我的配置文件,从 jetspeed 的抄的,有两行太长了所以加了行号,使用的
时候记得去掉:

1 vbell off
2 defescape ^Jj
3 escape ^Jj
4
5 startup_message off
6
7 # define a bigger scrollback, default is 100 lines, I like large scrollback
8 defscrollback 2048
9
10 # An alternative hardstatus to display a bar at the bottom listing the
11 # windownames and highlighting the current windowname in blue. (This is only
12 # enabled if there is no hardstatus setting for your terminal)
13 hardstatus on
14 hardstatus alwayslastline
15 hardstatus string “%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a ”
16
17 # another way to show window list
18 #caption always “%?%F%{-b 4w}%:%{-b bb}%? %H | %l | %m-%d %c |%?%F%{-b 4w}%?%L=%-Lw%45>%{-b w4}%n%f* %t%{-}%+Lw%-0<"
19
20 # key bingdings
21 # remove some stupid/dangerous key bindings
22 bind k
23 bind ^k
24 bind .
25 bind ^\
26 bind \\
27 bind ^h
28 bind h
29 bind l windowlist
30 bindkey ^[, prev
31 bindkey ^[. next
32
33 # some useful keys for resizing
34 bind = resize =
35 bind + resize +1
36 bind - resize -1
37 bind _ resize max
38
39 # bind some keys for moving between split windows
40 bind j focus down
41 bind k focus up
42 bind t focus top
43 bind b focus bottom
44
 
from: