Unix 基本指令: script 抓取 Terminal 顯示畫面, 存成檔案

在 debug, compile, make world... 的時後, 如果訊息太長, 通常都是用 screen 往上慢慢翻, 不然就是用 "> file" 將輸出導到某個檔案去, 然後再去看那檔案的內容.

但是現在遇到一個問題, 我是遠端 ssh 執行某個指令, 然後要接收他的回傳值, 這讓上述的兩種作法都行不通.

  • screen: 因為一次上百台機器, 記錄太長, 搜尋困難
  • "> file": 在接收回傳值前, 都有些問答要答(ex: 問密碼, 問 y/n 等等的), 用此方法會看不到, 以致無法做此問答動作.

此時就要請出 script 的命令來用, 用法如下:

  • script [filename] # 開始記錄(Terminal 中的內容)
  • exit # 此時就會將 Terminal 的內容寫入 [filename] 中

ex:

  • script /tmp/make_world.log
  • ... make world ..... 開始創造世界...
  • exit
  • less /tmp/make_world.log # 就可以看到中間所有過程(也可當記錄教學用)

還有一些詳細的參數, 可自己再 man script.

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Unix 基本指令: script 抓取 Terminal 顯示畫面, 存成檔案〉中有 8 則留言

  1. script 的確是可以這樣用,不過有一個缺點,會記錄所有按鍵動作
    如果只是要記錄 output,也可以考慮使用 tee 這隻程式
    最後的結果乾淨多了

  2. 感謝指點, 但是我剛剛用 tee 的狀況是, 好像不太合用(還是應該說我不會用)..
    ls / | tee /tmp/xxx
    我是先這樣子測試是 ok 的, 但是若我要執行多重指令, 不知道該怎麼用耶.. Orz..

  3. 嗯 這只是我個人的使用習慣啦,未必適用於你的要求
    如果有多個指令的話,tee 會比較麻煩
    我自己的使用是這樣的
    1.如果那一堆指令是固定的,我會寫到一個 script 去跑結果就可以丟給 tee
    也可以 sh | tee log 這樣一直到離開那個 shell 之前 所有丟到 stdout 的東西都會被記錄下來
    2.如果是記錄任意的操作過程,我一般就直接用 screen 的 log 功能(c-a H)來記錄

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料