screen 是一個可以在單一個終端機裏,建立和開啟多個虛擬終端機的工具。因此,可以使用screen,一邊進行程式修改,一邊編譯程式,且還可以一邊用shell 下指令查詢資料等等。對於,開發者而言,screen 是一套非常強大的工具。以下我們將詳細介紹screen 的指令。
1. 安裝screen
在macOS 下,執行以下指令,進行screen 的安裝。
brew install screen
安裝完成之後,使用以下指令查看screen 資訊。
brew info screen
2. 使用screen
開啟終端機,在命令下輸入screen,即可以開始使screen。在使用之前,先解講screen 的指令規則。所有screen 的指令,都是由Ctrl+a 開始的。文章後面,會以C+a 代表按住Ctrl 鍵不放再按a 鍵。
Ctrl+a → C+a
舉例來說,
C+a c
代表按住Ctrl 鍵不放再按a 鍵,然後放開按c 鍵。
C+a C+c
代表按住Ctrl 鍵不放再按a 鍵,然後放開,再按Ctrl 鍵不放再按c 鍵。
3. 詳解screen 指令
1C+a c開啟新的視窗2C+a C+c開啟新的視窗,並切換到這個新的視窗3C+a nC+a C+nC+a Space切換到下一個視窗4C+a pC+a C+p切換到上一個視窗5C+a 0切換到第一個視窗(即第0個視窗)6C+a 數字切換到第X 個視窗(X 為0 ~ 9)Ex: C+a 97C+a wC+a C+w列出目前所開啟的視窗列出的格式為:0- Name 1- Name 2- Name 3- Name …Name 代表這個視窗的Title,預設是以開啟時的shell 名稱,若– 變為*,即表示為目前顯示的視窗。8C+a k關閉視窗並退出screen9C+a '會出現“Switch to window:”,輸入數字按下Enter,即可以跳到該視窗10C+a "會出現視窗選單,上下移動,選到要跳的視窗,按下Enter,即可以跳到該視窗11C+a C清除目前的視窗內容12C+a dC+a C+dDeatch 目前的視窗,並放到背景執行13C+a H紀錄目前視窗所有顯示過的東西(檔名為screenlog.n,n 為視窗號碼)14C+a iC+a C+i顯示目前視窗的資訊15C+a lC+a C+l重繪視窗,如果視窗有字型亂掉可以使用這個指令16C+a mC+a C+mC+a Enter顯示最近一次視窗訊息17C+a v顯示screen 的版本資訊18C+a ?顯示screen 的說明19C+a k關閉screen 的視窗。輸入19 指令之後,出現詢問是否要關閉選項,要再輸入y 確定關閉視窗20C+a A修改視窗的標題名稱
4. screen 的Copy Mode
1C+a [C+a Esc進入screen 的Copy Mode其按鍵規則,基本上與vim 一樣① h → 向左移動一格② l → 向右移動一格③ j → 向下移動一格④ k → 向上移動一格⑤ 0 → 移到該行的最左邊⑥ ^ → 移到該行最左邊的非空白字元⑦ $ → 移到該行最右邊的非空白字元⑧ w → 以字為單位往前移動並移到字首⑨ b → 以字為單位往後移動並移到字首⑩ e → 字為單位往前移動並移到字尾⑪ C+b → 向上捲一頁⑫ C+f → 向下捲一頁⑬ / → 輸入要尋找的字串,按下Enter 開始尋找 按下n 往下找下一個相同字串⑭ ? → 輸入要尋找的字串,按下Enter 開始尋找 按下n 往上找下一個相同字串⑮ space → 第一次按下到第二次按下的區域會被複製到暫存區內⑯ C+a ] → 把⑮ 指令存到暫存區內的內容複製出來⑰ Esc → 離開Copy Mode
5. screen 的分割畫面
1C+a |將視窗分割成左右兩個畫面2C+a S將視窗分割成上下兩個畫面3C+a Tab在有分割域區時,指令可以從🅐 畫面跳到🅑 畫面,亦可從🅑 畫面跳到🅐 畫面4C+a Q移除全部視窗分割畫面,回到沒有分割畫面狀態5C+a X移除一個視窗分割畫面
6. screen 的特殊用法
前面有提到C+a d 指令,可以讓screen 進入Deatch 的狀態。當screen 在Deatch 狀態時,其每個視窗內的Process 仍然在執行,即使 Logout 也不會有影響。所以你可能接著離開身邊的電腦,然後跑出去喝水,或者另外找個地方坐下來再接著剛剛的工作。
那當你重新Login 之後,要怎麼重回剛剛screen 呢?重新開啟終端機輸入screen,只會再重新開啟一個新的screen 視窗。如果要重新再接回剛剛Deatch 的視窗,只需要輸入以下指令即可:
screen -r
但事情並不是這麼簡單。如果你的開啟的screen 數量只有一個,使用上述指令,即可以接回原本的screen 視窗。那該如何確認現在的screen 數量?只需要輸入以下指令即可:
screen -ls
如下圖所示,可以看到screen 的數量為2。
上面的Attached 表示已經連接的screen,Detached 表示沒有連接的screen。
如果screen 是多個,可以根據其screen id 來重新接回screen。如上圖,可以使用以下指令來重回指定的screen。
screen -r 1819
如果出現screen 已經Dead 狀態,如下圖。
可以輸入以下指令移除Dead 的srceen 視窗。
screen -wipe
如果已經有多個Deatch 的screen,可以輸入以下指令,一次便將全部的Deatch 的screen 關閉。
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
7. screen 的.screenrc 設定檔
每個使用者都能夠建立自已的.screenrc 檔案,.screenrc 為screen 的進階設定檔案。輸入以下指令,編輯.screenrc。
vim ~/.screenrc
以下為目前常用的.screenrc 設定檔。
#關閉開啟訊息
startup_message off
#強制終端機為utf8
defutf8 on
#設定screen 可以往上捲的行數
defscrollback 1000000
#離開視窗時,自動refersh 螢幕
altscreen on
#MAC下,Alt+向左鍵切到上一個視窗
bindkey ^[^[[D prev #Mac iterm2
#MAC下,Alt+向右鍵切到下一個視窗
bindkey ^[^[[C next #Mac iterm2
#在視窗底下新增一個狀態列
Set hardstatus always on
defencoding utf8
#狀態列格式
#caption always "%{.KW} %-w%{.mW}[%n] %t%{.KW}%+w"
hardstatus alwayslastline " %-Lw%{= Bw}[%n] %t%{-}%+Lw %=| %Y/%m/%d%{= .m} %0c:%s "
#動態顯示視窗的標題名稱
shelltitle '$ |bash'
可以將以上內容貼到自己的.screenrc 上或到這裡下載檔案。
分享此文:
按一下以分享至 Facebook(在新視窗中開啟)
按一下即可分享至 X(在新視窗中開啟)
X
按一下即可以電子郵件傳送連結給朋友(在新視窗中開啟)
電子郵件
分享到 LinkedIn(在新視窗中開啟)
分享到 Tumblr(在新視窗中開啟)
Tumblr
按一下即可分享到 Threads(在新視窗中開啟)
Threads
請按讚:喜歡 正在載入...