每次更改檔案時自動執行命令

每次更改檔案時自動執行命令

每次我對文件進行一些更改並保存時,我都希望運行一個命令。我可以設定一個 Ruby 腳本來監視檔案並根據需要執行命令,但我突然想到應該有一些簡單的 Unix 方法來執行此操作。有沒有?我使用的是 Ubuntu 8.10,稍微不那麼含糊。

編輯:

incron被推薦了,看起來不錯。但我無法讓它工作(編輯:當我將文件保存在指定目錄中時,該命令似乎沒有運行,或者我的命令有錯誤)。我安裝了 incron 並使用 incrontab 設定了使用者的 incron 表,並將使用者新增至允許清單。我的具體情況是編輯 TeX 檔案。我希望該命令將其呈現為 PDF,以便在每次編輯和保存 TeX 文件時運行。這是我想出的 incron 表條目:

/home/ehsanul/Documents/latex IN_CLOSE_WRITE echo $@/$# | grep \\.tex$ | xargs xelatex

我究竟做錯了什麼?

答案1

你沒有說你正在使用哪個 Unix,但 Linux 有inotify並且有inotify 工具因克朗

有一個紅寶石介面通知。

答案2

不直接,不(除非我不熟悉的文件系統上有某種掛鉤)。

您是否透過某種標準方法編輯文件?如果是這樣,從這個角度而不是從系統層級自動化命令會更容易。

如果您告訴我們更多有關情況,我們也許能夠給您更好的答案。

答案3

如果您碰巧使用版本控制(如果您不這樣做,當然應該!),您可以設定提交掛鉤。只需選擇一個允許您執行此操作的版本控製程式即可,大多數程式都可以。

答案4

安裝inotify 工具

若要監視單一檔案並在其變更時執行命令:

inotifywait -m --format %w FILENAME | while read file; do
  COMMAND ${file}
done

在哪裡

  • FILENAME:您要觀看的文件的名稱
  • COMMAND:要在檔案更改時執行的命令
  • -m:無限期收聽的選項

inotifywait可以輸出比檔案名稱更多的資訊(透過--format),看看man inotifywait它還能做什麼(這是一個相當短的閱讀)。另外,例子維基百科上給了一些見解。

有人可能應該將這些命令包裝在方便的腳本中,該腳本完全按照您的要求進行操作

convenience-script FILENAME COMMAND

相關內容