Files
將文件寫入轉移到程序
我有一個無法更改的 OSX GUI 應用程序 - 它在完成作業時將新的 CVS 行寫入日誌文件。我想使用這些新線,但它們會不斷被添加。
有沒有辦法將應用程序的輸出直接重定向到腳本中,然後我可以在生成新行時對其進行處理?每 X 秒讀取一次文件以獲取更改是不可取的,雖然我可以
launchd
用來檢測文件的更改並以這種方式處理它們 - 我正在尋找更優雅的東西。任何想法(帶有範例 - 我正在學習)將不勝感激。編輯
我不確定這是不是最好的方法,但我已經設法通過 tail 的 -F 標誌獲得即時結果。雖然我能夠過濾最後一行,但在它第一次執行時,當文件更新時,它會輸出所有行,而不僅僅是最後一行(根據需要)。
tail -F -n 2 '/path/to/Epson4880_audit.txt' | grep "."
您可以用 FIFO 替換輸出文件,並讓您的其他程序從中獲取輸入。
例如:
mkfifo Epson4880_audit.txt # launch your program grep "." Epson4880_audit.txt
請注意,這不能保證有效。一些程序檢查他們的輸出是一個真實的文件。如果您確實想保留行的日誌,則第二個過程必須確保在它們到達時列印它們。例如做
tee real_Epson4880_audit.txt | grep "."
. 另請注意,如果沒有第二個程序,您將無法啟動您的第一個程序,因為第一個程序將被迫等待讀者。如果您想在沒有第二個程序的情況下執行第一個程序,則必須先刪除 FIFO。