Lakukan sesuatu saat file diubah

10

Ketika saya menulis dokumen LaTeX, saya menemukan diri saya menekan F6 di editor saya untuk sering dikompilasi. Atau ketika saya menggunakan SASS, saya sering mengetik makeuntuk mengubah .scsske saya .css.

Sekarang saya ingin membiarkan mesin melakukan pekerjaan kotor dan menjalankan makeatau sesuatu yang lain setiap kali perubahan file yang diberikan.

Sejauh ini saya menjaga jendela terminal tetap terbuka dan menekan panah-atas dan kembali. Atau saya gunakan watch make, tapi itu sepertinya solusi yang aneh.

Apakah ada cara yang baik di Linux untuk melakukan sesuatu ketika file yang diberikan berubah?

Martin Ueding
sumber

Jawaban:

4

Anda sedang mencari inotifywait, bagian dari alat yang tidak sah . Ada beberapa contoh cara menggunakannya di situs proyek tetapi pendekatan sederhana adalah,

while true; do inotifywait code.cpp -e modify; make; done

bagian kuncinya adalah,

inotifywait code.cpp -e modify

Perintah itu akan menunggu sampai code.cppdiubah kemudian keluar. Masukkan infinite loop dan diikuti dengan makepenyebabnya untuk terus-menerus membangun kembali setelah setiap modifikasi.

Selain menunggu modifikasi, Anda dapat menunggu pembuatan, penghapusan, akses, pembukaan, penutupan, dan banyak lagi. Saya sangat merekomendasikan melihat contoh proyek dan tidak menunggu halaman manual untuk beberapa ide lain tentang bagaimana hal itu dapat digunakan.

lostriebo
sumber
Itulah tepatnya yang saya cari!
Martin Ueding
1

Lihatlah incron , paket mirip cron yang merespons peristiwa sistem berkas, alih-alih peristiwa waktu. Paket terdiri dari daemon ( incrond) dan manipulator tabel ( incrontab), analog dengan cron yang terkenal crond/ crontabberpasangan.

Dengan incron, Anda dapat dengan mudah mengatur untuk menjalankan makesetiap kali file dan / atau direktori tertentu dimodifikasi.

Steven Monday
sumber
Tampaknya sedikit berlebihan di satu sisi, tetapi di sisi lain itu hanya alat yang tepat. Saya harus memeriksanya, mungkin saya bisa mengaktifkan dan menonaktifkannya untuk setiap sesi pemrograman.
Martin Ueding
0

Daripada watch make, bagaimana watch ls? Kemudian tepat makeketika stempel waktu berubah.

Scott C Wilson
sumber
Nah, buat sudah memeriksa stempel waktu, jadi agak tidak ada gunanya untuk memeriksa waktu dan kemudian biarkan memeriksa waktu lagi.
Martin Ueding
Benar tetapi menjalankan make lebih mahal daripada menjalankan ls.
Scott C Wilson
1
Dan jika makefile saya hanya dua baris untuk single itu .tex? Apakah menurut Anda layak menulis lsparser?
Martin Ueding