Screen#

screen 是自由軟體基金會的GNU計劃的一部份


Introduction#

Screen 是一個全螢幕視窗管理器,可在多個進程(通常是互動式 shell)之間多工處理實體終端機。每個虛擬終端提供 DEC VT100 終端的功能,此外,還提供 ANSI X3.64 (ISO 6429) 和 ISO 2022 標準中的多種控制功能(例如,插入/刪除行和支援多個字元集)。每個虛擬終端都有一個滾動歷史記錄緩衝區,以及一個複製和粘貼機制,允許用戶在窗口之間移動文本區域。當調用 screen 時,它會創建一個包含 shell(或指定命令)的窗口,然後讓開您,以便您可以像往常一樣使用該程序。然後,您可以隨時創建包含其他程序(包括更多 shell)的新(全屏)窗口、終止當前窗口、查看活動窗口列表、打開和關閉輸出日誌記錄、在窗口之間複製文本、查看滾動歷史記錄、在窗口之間切換等。所有視窗都完全獨立地運行其程式。當程式的視窗目前不可見時,甚至整個螢幕會話已與使用者終端分離時,程式仍會繼續執行。


Install#

$ sudo apt-get install screen

Operate#

Screen 指令說明#

Use: screen [-opts] [cmd [args]]

or: screen -r [host.tty]

參數說明
-a強制將所有功能(capabilities)加入每個視窗的 termcap。
-A -[r|R]使所有視窗自動調整為新的螢幕寬度與高度。
-c file使用指定的設定檔,而非預設的 .screenrc
-d (-r)分離(detach)其他地方執行的 screen,並在此重新連接。
-dmS name以守護程序模式啟動:建立一個分離的 screen 工作階段。
-D (-r)分離並登出遠端 session(並在此重新連接)。
-D -RR執行任何必要操作以取得一個 screen session(自動處理重連或建立)。
-e xy更改指令前綴鍵組合。
-f開啟資料流控制(flow control);-fn 關閉;-fa 自動。
-h lines設定回捲歷史緩衝區大小(以行數為單位)。
-i啟用輸出中斷(在開啟 flow control 時更早中斷輸出)。
-list-ls僅列出現有的 Screen Socket 目錄內容,不執行其他操作。
-L開啟輸出日誌(logging)。
-m忽略 $STY 環境變數,強制建立新的 screen session。
-O選擇最佳化的輸出方式,而非完全模擬 vt100。
-p window預先選擇指定名稱的視窗(若存在)。
-q安靜模式啟動;若失敗則以非零狀態碼結束。
-r重新連接到一個已分離(detached)的 screen 工作階段。
-R若可重新連接則重連,否則建立新的 session。
-s shell指定要執行的 shell(預設為 $SHELL)。
-S sockname將此 session 命名為 <pid>.sockname(預設為 <pid>.<tty>.<host>)。
-t title設定視窗標題。
-T term指定 $TERM 環境變數的值(預設為 "screen")。
-U指示 screen 使用 UTF-8 編碼。
-v顯示版本資訊(例如:Screen version 4.00.03 (FAU) 23-Oct-06)。
-wipe清理 SockDir 中的無效項目,不執行其他操作。
-x連接至尚未分離的 screen(多重顯示模式)。
-X在指定的 session 中執行 <cmd> 作為 screen 命令。

GNU Screen 快捷鍵對照表#

快捷鍵說明 (英文指令)
^B b傳送 break 訊號 (break)
C清除螢幕 (clear)
:進入命令模式 (colon)
^[ [進入複製模式 (copy)
^D d分離目前的 session (detach)
^V輸入二合字元 (digraph)
*顯示所有的 display (displays)
.輸出 termcap 設定 (dumptermcap)
F調整視窗大小以符合終端 (fit)
^F f開關軟體 flow control (flow)
^I在分割視窗間切換焦點 (focus)
h將螢幕內容輸出為檔案 (hardcopy)
?顯示說明畫面 (help)
{ }檢視或捲動歷史 (history)
i顯示 session 資訊 (info)
^K k關閉目前的視窗 (kill)
^M m顯示上一則訊息 (lastmsg)
,顯示授權資訊 (license)
^X x鎖定螢幕 (lockscreen)
H開始或停止記錄輸出 (log)
a設定或使用 meta-key (meta)
M切換視窗活動監控 (monitor)
^@ ^N sp n切換至下一個視窗 (next)
N顯示或設定視窗號碼 (number)
Q關閉其他分割,僅保留目前 (only)
^A在最近的視窗間切換 (other)
B傳送 power-break (pow_break)
D強制分離 session (pow_detach)
^H ^P p ^?切換至上一個視窗 (prev)
^\關閉所有視窗並離開 screen (quit)
<將剪貼簿內容讀入 (readbuf)
^L l重新繪製螢幕 (redisplay)
X移除目前的區塊或視窗 (remove)
=清除剪貼簿 buffer (removebuf)
Z重設終端 (reset)
^C c建立新視窗 (screen)
'選擇視窗(可搭配編號) (select)
_切換靜音監控 (silence)
S分割視窗 (split)
^Z z暫停 screen(回到 shell) (suspend)
^T t顯示目前時間 (time)
A設定視窗標題 (title)
v顯示版本資訊 (version)
^G觸發視覺響鈴 (vbell)
W顯示視窗寬度 (width)
^W w顯示所有視窗列表 (windows)
^R r開關自動換行 (wrap)
>將剪貼簿內容寫到檔案 (writebuf)
^S s傳送 XOFF (xoff)
^Q q傳送 XON (xon)

快速視窗選擇鍵#

快捷鍵說明 (英文指令)
^]貼上剪貼簿內容 (paste)
]貼上剪貼簿內容 (paste)
"顯示視窗列表(垂直) (windowlist)
-切換到上一個視窗 (select -)
0 ~ 9直接選擇指定編號的視窗 (select 0..9)

Colon 指令#

參數說明
escpae ^Ee更改指令前綴鍵組合。
unset TMOUT防止因時間到跳出視窗

Reference#

Official docs:

screen