CLI的環境裡常會有需要同時遠端連結不同地方,或者需要同時開好幾個畫面切來切去,GNU screen可以只要鍵盤、不需滑鼠快速切換。
可明確顯示的設定檔
screen 工具也已是套件裡必有的工具,安裝好後,不同的版本的Linux,不見得提供有設定良好的初始設定檔,沒有好的初始設定檔,自己在哪個地方會常搞不清楚。
只要把以下內容加到家目錄的 .screen 的內容:
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
終端機的最後一行,就能明確顯示所在主機名稱、哪個視窗及日期時間。
session的啟用
每執行一次 screen 就是開啟個 session,直接執行 screen,預設的視窗名稱為 bash,可以指定 session 名稱 screen -S usevim。screen -ls 可看到目前所有 session 的狀況,
可透過 screen -r 或 screen -r 某session名稱,來繼續指定的session進行接續的工作。
這常常是在辦公室連線處理什麼事,但還沒完成,可暫時地 detached,回到家裡要再連線的時候,
[singernew@ithelp ~]$ screen -ls
There is a screen on:
9352.usevim (Detached)
1 Socket in /run/screens/S-singernew.
看到usevim是 Detached 的狀態,然後執行 screen -r usevim 就可繼續在同樣的環境工作。
視窗管理
所有操作screen的動作都是先按 Ctrl+a 再按所指定的鍵來執行,
C-a c 產生新視窗
C-a n 到下一視窗
C-a p 到前一視窗
C-a A 重新命名此視窗
C-a d 則是暫時退出這session,就算登出系統,這個session仍是運作中。
分割視窗
已在screen裡時,想同時兩個window在同一畫面,可先按C-a S
會分隔成一半,透過 C-a Tab 游標移到下半部,再按 C-a c,新的window就出現在下半部,可透過 C-a Tab 做上下的切換。
這是水平切割,但若想垂直切割畫面的話,screen需要上patch,顯然比較麻煩,但後來有screen的替代者,水平垂直切割都可以,就寧可用那個替代者。
複製貼上的功能
分割上方的window名為paste,分割下方的window名為copy,用C-a Tab移到下方window,C-a [ 進入複製模式,
然後用像 vi 的 kjlh 來做上下右左的移動,移到開始要標示的地方按enter,
然後移動游標,就會把所要的區域反白起來,
再按enter,就會把反白的地方複製起來,下方的狀態列顯示複製了多少字元。
再 C-a Tab 移到上方視窗,vi 個檔案,用 C-a ] 就可貼上剛複製的內容。
上述是常用到的功能。screen 最實在的用處,機器本身沒斷電的話,只要在上面在 screen 的環境下操作,而自己是從遠端連過去,萬一網路不順而斷掉,斷線之前的狀況仍在 screen 的 session 裡,只要再連上去再 Attatch,又可繼續工作處理。這是screen使用的最大好處。
參考指令:
http://aperiodic.net/screen/quick_reference
http://www.pixelbeat.org/lkdb/screen.html