在螢幕內滾動,或暫停輸出

在螢幕內滾動,或暫停輸出

我用螢幕在管理我工作的伺服器時執行命令列任務。我通常會運行小型命令(主要是檔案系統任務),但有時我會執行更廣泛的任務(例如 DBA)。

輸出這些任務對我來說很重要。由於我使用Ubuntu 和OS X(都是終端Windows)來執行任務,但我需要使用螢幕,因此滾動不可用,因此任何長輸出(想想來自選擇的500 行表)對我來說都是不可見的。滑鼠滾輪是不可能的。

當我說“滾動對我來說是不可見的”時,我的意思是:

在 Mac OS X 中使用螢幕時位於頂部,同時捲動

我在考慮兩個選擇:

  1. 暫停(思考分頁)某個命令的輸出。當輸出開始時,它會讓我讀取正在發生的事情,然後我按“Enter”,然後輸出繼續,直到沒有更多內容可顯示。

  2. 在螢幕內滾動。但我不知道這是否可能。

當然,我不知道這些選項是否真的可能的。如果是的話,如何實現它們?其他替代方案將受到好評。

答案1

Screen 有自己的滾動緩衝區,因為它是終端多工器並且必須處理一些緩衝區。

也許有更好的方法,但我習慣使用“複製模式”滾動(您可以使用螢幕本身複製文本,儘管這也需要貼上命令):

  • 點擊螢幕前綴組合(預設為C-a/ control+ ),然後點擊或。AEscape[

  • 使用箭頭鍵(和)上下移動

  • 完成後,按箭頭鍵、數字和某些字母之外的任意鍵即可返回滾動緩衝區的末端。大多數人使用qEscape

(如果不是退出,而是按EnterSpace然後移動遊標,您將開始選擇要複製的文本,然後再次按Enter或將複製它。然後您可以粘貼,然後再貼上。)SpaceC-a]

當然,您始終可以使用moreless,這兩個常用的尋呼機,這對於某些命令來說可能就足夠了。

答案2

screen按照指出使用緩衝區透過njsg是一個很好的解決方案。您也可以在螢幕內的 xterm termcap 資訊中停用備用文字緩衝區。停用後,您可以使用滾動條(和滑鼠滾輪)上下滾動。

將其添加到您的~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

您可以閱讀更多討論這裡

答案3

所有這些答案都解決瞭如何在螢幕會話中導航,但是screen 指令中有一個內建功能,可以將所有內容儲存在檔案中-L根據手冊的說法:

-L 告訴 screen 開啟 Windows 的自動輸出日誌記錄。

所以你可以這樣做:

screen -L -S testscreen

它將在當前目錄中建立一個文件,文件名稱screenlog.##該畫面的從 0 開始的數字。

這有很多優點,對我來說最重要的是:

  1. 記錄我所做的事情,因為我可以將日誌檔案保存在專案資料夾中以供將來參考。
  2. 您可以非主動和被動地監控該過程:
    • 用於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 鍵逐行瀏覽結果。

相關內容