Bash
閱讀終端中顯示的所有內容
我正在創建一個將內容寫入終端的終端應用程序。為了測試它,我真的應該測試終端中實際顯示的內容。有沒有辦法以某種方式讀取終端中實際顯示的數據?
終端必須是某處的某個文件或某物,因此必須有某種方法可以讀取那裡的內容。
cat /dev/tty
似乎給了我一個在那裡的數據流..但我不想看到擊鍵,只是我寫的。
一種選擇是在
tee
您要跟踪的所有命令之前使用該工具。這樣,您可以將所有輸出儲存在選定的日誌文件中。請參閱下面的範例,其中我將所有
bash
輸出保存到名為的文本文件中log.txt
:bash | tee log.txt echo 'hello world' ls exit cat log.txt
CTRL+D
完成後,您可以使用 a或簡單地鍵入exit
(如上例所示)退出新的 BASH 會話。如果您只是在尋找實際傳遞給終端的命令(我不清楚這是否是原始問題所需要的),您總是可以執行
history
或檢查~/.bash_history
一些終端程序提供螢幕轉儲(例如xterm),但大多數不提供(參見Existing command line text on screen to file? (non-graphical Linux)例如)。您可以使用 gimp 等工具製作螢幕截圖,但這不會告訴您實際字元是什麼。為了發展,我需要知道這一點。
我會使用
script
將輸出記錄到typescript
. 您可以cat
將其返回螢幕(或使用less -R
,如果轉義序列足夠簡單)。對於更複雜的事情或較長的痕跡,我使用其他工具:
slowcat
放慢cat
進度vile-pager
將轉義過濾為可讀形式(優於**less
**-顏色序列跨行工作,但仍僅限於單行游標移動)。這是一個使用vi-like-emacs的過濾器,通過一個特殊用途的實用程序。為了說明差異,這裡是在我的一台 Debian 機器上執行
less -r
的typescript
文件的螢幕截圖:apt-get update
相反,
vile-pager
突出顯示文本被覆蓋的地方:無論哪種方式(更少或惡意),如果您的應用程序在螢幕上移動游標,查看輸出的唯一方法是使用 cat/slowcat/etc。