在newsmth上面看到Dieken写了一篇关于screen的简单教程,贴在这里跟大家共享。
screen 是一个特殊的模拟终端软件,利用它能在一个终端窗口里模拟出多个终端,并且能分割窗口、类似 VI 的方式搜索和拷贝屏幕输出,最重要的是利用
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 里配置为
建议在 ~/.bashrc 中设置 PS1 的后面一行加入PS1="\\n[\$SHLVL]$PS1"
这句,这样能容易看出当前的 shell 是否嵌套在其它 shell 里运行的。
附件是完整的.screenrc