2013年5月29日 星期三

screen基本指令教學

screen是個簡單方便的terminal console管理工具,大概有幾個主要的優點:
  • 在一個terminal軟體中開啟許多子console視窗
  • 可以dettach出來、之後又reattach回去
  • 有scrollback的功能
  • console視窗間複製貼上
  • 切割console視窗

安裝

在Ubuntu上直接 $ sudo apt-get install screen就可以了

Command-line指令

$ screen
  • 直接開啟新的session
$ screen -list
  • 列出目前有哪些已經存在的session可以attach進去
$ screen -R
  • reattach回session。如果目前沒有session存在,直接就地開啟一個新的session。如果有好幾個不同的session,使用screen -R
$ screen -U
  • 以utf-8 mode執行
$ screen -d
  • 強制將某個正在被attach中的session給detach掉
$ screen -wipe
  • 將廢棄的screen清除

Key-Binding指令

screen預設是以Ctrl-a(同時按住鍵盤Ctrl跟a兩個按鈕,如果您能理解控制字元,這就是等同於"^A")來啟動console視窗管理,接著同時鬆開Ctrl與a鍵,按下另一按鍵或下達指令來進行操作。

Ctrl+a c
  • 開啟一個新的console視窗
Ctrl+a Ctrl+a
  • 連續兩次,回到上一個console視窗
Ctrl+a [1~9]
  • 切換到1號至9號的某個console視窗
Ctrl+a "
  • 列出目前所有視窗,可用上下方向鍵選擇要進入的console視窗,按下enter進入
Ctrl+a k
  • 刪除目前的console視窗
Ctrl+a d
  • 將目前session給detach掉
Ctrl+a Esc
  • 進入copy mode,可用上下左右操控或進行scrollback。/或?用來搜尋(類似vim)。空白鍵可進行選取,決定範圍後按下第二次空白鍵就會複製入buffer中。之後使用Ctrl+]就可以將剛剛screen放入buffer中的內容貼上
Ctrl+a :sessionname [name]
  • 設定session的名稱,之後在comman-line模式執行screen -list方便檢視
Ctrl+a v
  • [Ctrl+a] 輸入控制字元Ctrl+a(因為Ctrl+)
Ctrl+a S
  • 將目前所在區域,水平分割成另外兩個區域
Ctrl+a Q
  • 關閉分割區域
Ctrl+a Tab
  • 切換分割區域

進階議題

  • 在screen的vim中輸入控制字元^A,需要在vim中進入insert模式,然後按下Ctrl+A,再按下a,就可以了
  • 因為screen畫面有些單調,有時無法辨別目前console視窗的狀態與session的狀態。如果需要像bash一樣有客製化的畫面,可以透過設定編輯~/.screenrc這個檔案來得到自己想要的效果。只要上Google搜尋screenrc就有許多範本可以下載,有空我再來寫篇screenrc教學。
  • 垂直分割screen區域(需要拿git版screen重make自己build)
    • $ git clone git://git.savannah.gnu.org/screen.git
    • $ cd screen/src
    • $ ./autogen.sh
    • $ ./configure
    • $ make
    • $ make install
    • 使用Ctrl+a | 來垂直分割區域
    • 參考 http://savannah.gnu.org/projects/screen/