Logs
我可以為終端會話分別記錄使用者輸入和程序輸出嗎?
我希望我能做
script
這樣的工作:❯ script --user=call.log --prog=response.log Script started ❯ echo foo foo ❯ exit Script done ❯ cat call.log echo foo ❯ cat response.log foo
既然沒有,我正在尋找替代品。
查看顯示的實際輸出,
script
如下所示:^M^[[35m❯ ^[[Ke^Hecho foo#[[?1l^[>^?2004l^M^M ^[]0;tmp: echo foo^Gfoo^M
我考慮過編寫一個解析器來提取我想要的東西——但這似乎很脆弱,特別是因為它似乎取決於使用者的 shell 配置。
有沒有更好的方法來分別記錄會話的輸入和輸出?
在不了解各種應用程序的內部情況的情況下,您無法分辨終端驅動程序(代表應用程序)回顯了哪些字元,以及給定應用程序輸出了哪些字元。
我使用**
script
擷取命令行**應用程序(如您的範例)的輸出,然後使用腳本過濾掉轉義序列(例如,請參閱我可以使用 unix utils 以程式方式將 ANSI 控制程式碼“燒入”到文件中嗎?)。這對於編輯器等全屏應用程序來說效果不佳(因為它無法清楚地顯示當游標在螢幕上移動、更新文本時會發生什麼)。為此,(通常)以慢動作回放會話(例如,
slowcat
)就足夠了。