Bash
將腳本的所有輸出擷取到文件中(來自腳本本身)
我有一個 bash 腳本,它呼叫各種命令並列印一些輸出(來自被呼叫的命令本身,例如
git pull
,以及腳本本身生成的資訊性消息,例如Operation took XX minutes
.我想將整個輸出從腳本本身擷取到一個文件中:基本上我試圖避免
./myscript.sh | tee file.txt
因非相關原因而需要呼叫。基本上我想做這樣的事情:
startCapture git pull echo "Text" other-command endCapture
我還要求在腳本執行時將輸出列印在我的 shell 上。
最終目標是:
./myscript.sh
無需額外的 shell 結構即可執行- 像我現在一樣查看終端上的輸出
- 在磁碟上獲取包含整個輸出的文件
這甚至可能嗎?
我發現擷取任何會話的所有輸出的一種方法是啟動一個新的 bash 會話並發送到日誌文件。它對於跟踪不僅僅是一個腳本非常有用。
重擊 | tee ~/bash.log #這將保存標準輸出,直到 bash 會話結束 重擊 | tee ~/bash.log 2>&1 #這將保存所有輸出,包括錯誤,直到 bash 會話結束
或者你可以自己編寫腳本
./myscript.sh | tee ./myscript.log #this will log only the output of the script.
您始終可以
script
在腳本內部呼叫以記錄所有內容。至於在 bash 腳本中同時列印和記錄所有內容
log.txt
:#!/bin/bash if [ -z "$SCRIPT" ] then /usr/bin/script log.txt /bin/bash -c "$0 $*" exit 0 fi echo teste
看到日誌
log.txt
:$ ./a.sh Script started, output file is log.txt teste Script done, output file is log.txt $ cat log.txt Script started on Fri Feb 16 17:57:26 2018 command: /bin/bash -c ./a.sh teste Script done on Fri Feb 16 17:57:26 2018