
OS X 有這個。理想情況下,我希望重新啟動看起來就像從未從終端機的 POV 中發生過一樣(讓我們忽略遠端會話並暫時假設 0 個後台進程)。意思是,我想在每個終端選項卡中查看標準輸入、標準輸出、標準錯誤(即回滾)歷史記錄。
注意:這與 bash 歷史無關。這是關於在重新啟動之間保留終端會話。
答案1
不,至少在基於gnome-terminal
其他VTE
模擬器的模擬器中,這是不可能以隱式且方便的方式實現的。
(當然,您可以在重新啟動之前明確瀏覽所有選項卡,「全選」並將內容複製並貼上到文件中,然後在重新啟動後使用某些檢視器查看這些文件。如果我理解您的意思,這不是什麼此外,顏色和其他格式也會遺失。
VTE
,後面的終端模擬小部件和許多其他終端模擬器預設gnome-terminal
將大部分回滾內容(但不是最新的位元)儲存在臨時檔案中。/tmp
阻止執行您正在尋找的操作的主要設計決策是:
這些文件在創建後立即取消連結。這樣,即使終端模擬器由於某種原因不正常退出,它們也會自動刪除(並釋放磁碟空間)。為了保留它們,它們應該連結回檔案系統樹(我不知道是否可能)或複製到另一個檔案中(如果回滾很大,這是一個緩慢的操作,更不用說正確處理可能耗盡的檔案了)磁碟空間)。
/tmp
許多發行版在重新啟動後都會清除其下的檔案。應選擇不同的持久位置,或需要與引導腳本進行一些合作。這些檔案經過加密(從
VTE
版本 0.40 開始),以克服萬一有人存取磁碟時資料外洩的隱私問題。加密金鑰僅在gnome-terminal
的記憶體中可用。為了使這些文件持續存在,要么應該跳過加密層(帶回舊的隱私問題),要么應該在重新啟動期間將密鑰至少暫時放置在磁碟上(...呃,直到用戶再次登入並gnome-terminal
再次啟動……聽起來並沒有好到哪裡去)。只有當您不關心隱私或檔案系統保證加密時才可行。
還有其他較小的問題需要解決,例如刷新這些文件中包含回滾資料最後一位的不完整區塊。
我希望我能概述一些VTE
阻止您執行所需操作的設計決策。我不知道如何在保持當前設計目標的同時滿足您的請求。也許還有另一個終端模擬器可以滿足您的需求,但可能會犧牲一些VTE
功能;我不知道。
答案2
我建議使用非常有用的screen
工具。非常值得學習。總結一下我在另一個問題上的回答:
請參閱 .screenrc,您可以使用自訂命令啟動預設窗口,這樣如果您希望恢復不同的會話,您可以使用不同的 .screenrc 檔案來恢復會話。screen -t ....
看gnu.org 螢幕手冊 - 啟動文件
保持終端機會話持久的好方法是在伺服器上執行「螢幕」工作階段。 「螢幕」工作階段為您提供了該伺服器上的多個窗口,您可以在其中登入其他電腦或其他裝置。您可以在伺服器上執行多個「螢幕」工作階段。您可以中斷連線並重新連線到所需的會話。 「screen」是老式的命令列鍵盤,但非常值得學習和使用以了解它的工作原理。它有幾個很大的優點:
- 易於安裝,在任何unix(或cygwin)上運行,不需要圖形(除了終端文字圖形)
- 提供持久的視窗終端會話(只要伺服器不重新啟動)
* 螢幕快速啟動 *
即時調頻:gnu.org 螢幕使用手冊
- screen - 執行 screen 來簡單地建立一個新會話
- screen -ls - 列出正在運行的螢幕會話
- screen -r 20229.pts-2.bangor - 重新附加到會話
這* 螢幕 ESCAPE 字元預設為 Ctrl-a *除非某些瘋狂的循環程式在 .screenrc 中更改了它,例如對於不重視進程後台控制的人來說「escape ^Zz」。如果在螢幕中運行,要獲得真正的 Ctrl-a 到終端機(轉到行首),則只需執行 Ctrl-a Ctrl-a。
- ESCAPE c - 建立新螢幕視窗
- ESCAPE 0 (或 1 2 3 4 5 6 7 8 9) - 切換到視窗 0 (或 1 2 . . )
- ESCAPE p 或 ESCAPE n - 切換到上一個或下一個窗口
- ESCAPE " - 視窗列表
- ESCAPE h - 顯示螢幕幫助
在另一個問題上,我完整地放入了螢幕幫助頁面、命令列用法和範例 .screenrc 的範例: