
我用螢幕在管理我工作的伺服器時執行命令列任務。我通常會運行小型命令(主要是檔案系統任務),但有時我會執行更廣泛的任務(例如 DBA)。
這輸出這些任務對我來說很重要。由於我使用Ubuntu 和OS X(都是終端Windows)來執行任務,但我需要使用螢幕,因此滾動不可用,因此任何長輸出(想想來自選擇的500 行表)對我來說都是不可見的。滑鼠滾輪是不可能的。
當我說“滾動對我來說是不可見的”時,我的意思是:
我在考慮兩個選擇:
暫停(思考分頁)某個命令的輸出。當輸出開始時,它會讓我讀取正在發生的事情,然後我按“Enter”,然後輸出繼續,直到沒有更多內容可顯示。
在螢幕內滾動。但我不知道這是否可能。
當然,我不知道這些選項是否真的可能的。如果是的話,如何實現它們?其他替代方案將受到好評。
答案1
Screen 有自己的滾動緩衝區,因為它是終端多工器並且必須處理一些緩衝區。
也許有更好的方法,但我習慣使用“複製模式”滾動(您可以使用螢幕本身複製文本,儘管這也需要貼上命令):
點擊螢幕前綴組合(預設為
C-a
/ control+ ),然後點擊或。AEscape[↑使用箭頭鍵(和)上下移動↓。
完成後,按箭頭鍵、數字和某些字母之外的任意鍵即可返回滾動緩衝區的末端。大多數人使用q或Escape
(如果不是退出,而是按Enter或Space然後移動遊標,您將開始選擇要複製的文本,然後再次按Enter或將複製它。然後您可以粘貼,然後再貼上。)SpaceC-a]
當然,您始終可以使用more
和less
,這兩個常用的尋呼機,這對於某些命令來說可能就足夠了。
答案2
答案3
所有這些答案都解決瞭如何在螢幕會話中導航,但是screen 指令中有一個內建功能,可以將所有內容儲存在檔案中-L
根據手冊的說法:
-L 告訴 screen 開啟 Windows 的自動輸出日誌記錄。
所以你可以這樣做:
screen -L -S testscreen
它將在當前目錄中建立一個文件,文件名稱screenlog.#
是#
該畫面的從 0 開始的數字。
這有很多優點,對我來說最重要的是:
- 記錄我所做的事情,因為我可以將日誌檔案保存在專案資料夾中以供將來參考。
- 您可以非主動和被動地監控該過程:
- 用於
tail -F
即時監控進度,無需連接到螢幕。 - 用於
grep
檢查日誌中的特定術語並產生通知(電子郵件、彈出視窗、VoIP 等)。這可以應用於多個螢幕,而無需您主動查看它們。
- 用於
答案4
我已經成功透過將內容傳輸到 來獲得基本分頁more
,例如:
ls -l | more
或者,如果您想要語法突出顯示等用例的顏色輸出,您可以使用
ls -l --color=always | more
這導致我可以輕鬆地一次瀏覽一個螢幕的輸出。我還沒有嘗試過 @uther 的修改,~/.screenrc
但當滑鼠可用時,這似乎確實是更可取的持久解決方案。
要嘗試一下,您可以訪問這個 BusyBox 模擬器進而...
cd ~/bin
ls -l --color=always | more
使用空白鍵翻閱ls -l
指令的結果,或使用 Enter 鍵逐行瀏覽結果。