Skip to main content

screen

screen 常用指令
啟用 screen
#> screen
or
#> screen -S <session-name>

列出所有 session
#> screen -ls

取回 (resume) 某個 session
#> screen -r <session-id>

無法取回 session 時,先 deattach 在 resume
#> screen -D <session-id>
#> screen -r <session-id>

強制終止 session
#> screen -X -S <session-id> kill

結束 screen 的 session
#> exit

進入複製模式,可複製視窗上指定的文字,操作方式:
使用方向鍵任意移動游標,按一次 space 開始標記游標的文字,再按一次 space 結束標記文字並離開複製模式。
Ctrl-a + [
要貼上剛複製的內容
Ctrl-a + ]  
screen 用來連接 RS232
screen /dev/ttyACM0 115200

TIP: 如果出現 screen is terminating,須改用 sudo。

環境配置檔

~/.screenrc:

# Start message
startup_message off

# Disable vbell
vbell off

# Set hardstatus always on
hardstatus alwayslastline " %-Lw%{= Bw}%n%f %t%{-}%+Lw %=| %M %d %0c:%s "

# Set default encoding using utf8
defutf8 on

# Set the number of scrollback lines
#defscrollback 10000

# Fix termcapinfo for xterm to allow column resizing
# xterm emulation is used by PuTTY
# Uncomment the line below if running on CentOS 6.x/7.x 
#termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

# Fix termcapinfo for cleaning the terminal after detach
# Uncomment the line below if running on AIX 7.x
#termcapinfo xterm*|rxvt*  te=\E[?1049l:ti=\E[?1049h:

TIPs:

start_message 關閉開啟後的提示訊息

vbell                      關閉可以避免按 tab 出現閃畫面

hardstatus        在畫面下方固定顯示視窗編號,非常實用的功能

defscrollback  回捲內容的行數

進入 screen 模式後指令

基本操作

離開 screen 但不中止 session (deattach)

Ctrl-a + d

離開 screen 並中止 session

Ctrl-a + k

複製模式

進入複製模式,可複製視窗上指定的文字,操作方式:
使用方向鍵任意移動游標,按一次 space 開始標記游標的文字,再按一次 space 結束標記文字並離開複製模式。

Ctrl-a + [

貼上剛複製的內容

Ctrl-a + ]  

多視窗操作

水平切割 <Ctrl-a> + |

垂直切割 <Ctrl-a> + S

切換視窗 <Ctrl-a> + tab

目前視窗最大化 <Ctrl-a> + Q

移除目前視窗 <Ctrl-a> + X     ;這不會終止 session

多個終端機操作

新增一個 screen 終端機

<Ctrl-a> + c

或者是在目前的 screen 終端機再執行一次 screen
NOTE:如果已經 deattach,再執行 screen 時,會開啟另一個不同的 screen 終端機

  • 每新增一個視窗,新的編號會從最小且沒有在使用的號碼開始,例如:
    • 現有 #0, #1, #2,新增後的編號為 #3
    • 現有 #0, #2, #3,新增後的編號為 #1
  • 不管新增多少個視窗,只要沒有做 deattach,所有開啟的視窗都屬於同一個 screen 終端機 

檢視目前已開啟的所有視窗

<Ctrl-a> + w

  • 視窗編號從 0 開始依序
  • 顯示 * 符號為目前使用的視窗編號

移動至前一個或後一個終端機

<Ctrl-a> + p 前一個 (視窗編號減一)

<Ctrl-a> + n 後一個 (視窗編號加一)

<Ctrl-a> + 視窗編號

Q & A

用 Putty 連線,每次 attach 時,視窗都會自動縮回預設大小

將設定檔以下這行移除註解


termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l 
用 tab 時,畫面都會閃一下,該如何解決

在 $HOME 目錄內新增 .screenrc

vbell off
如何很快的確認,目前是否在 screen 終端機內

Ctrl + a + a

  • 如果已經 deattach 終端機,畫面不會有任何變化。
  • 如果是在 screen 終端機內,有多個開啟視窗時,會切換到前一個視窗;只開啟一個視窗時,畫面會出現 'No other window'。