Saya memiliki file bernama file1 yang saya inginkan dalam sebuah skrip, setiap kali ada perubahan di dalamnya, lakukan sesuatu, bunyi bip sebenarnya. Bagaimana aku melakukan itu?
8
Saya memiliki file bernama file1 yang saya inginkan dalam sebuah skrip, setiap kali ada perubahan di dalamnya, lakukan sesuatu, bunyi bip sebenarnya. Bagaimana aku melakukan itu?
Jika Anda telah inotify-tools
menginstal (setidaknya itulah nama paket di Debian) ketika Anda dapat melakukan sesuatu seperti ini:
while inotifywait -q -e modify filename >/dev/null; do
echo "filename is changed"
# do whatever else you need to do
done
Ini menunggu peristiwa "modifikasi" terjadi pada file bernama "nama file". Ketika itu terjadi inotifywait
output perintah filename MODIFY
(yang kita buang dengan mengirimkan output ke / dev / null) dan kemudian berakhir, yang menyebabkan tubuh loop dimasukkan.
Baca halaman manual inotifywait
untuk lebih banyak kemungkinan.
while
. Perhatikan juga bahwa apa yang oleh manusia dianggap sebagai "modifikasi" mungkin tidak selalu berfungsi: ini akan menangkap tambahan misalnya, tetapi tidak akan menangkap editor sepertivim
(file yang ditonton diganti namanya atau ditukar dengan cadangan), atauperl -i
(di tempat) sunting) yang menggantikan file dengan yang baru. Begitu salah satu dari itu terjadi,inotifywait
tidak akan pernah kembali. Menonton inode dan menonton nama file bukan hal yang sama, jadi itu tergantung pada use case.move_self
akan menangkap nama. Lihat halaman manual untuk daftar lengkap acara.Tanpa menunggu, Anda dapat menggunakan skrip kecil ini dan pekerjaan cron (setiap menit atau lebih):
sumber
Datang mencari one-liner di MacOS. Diselesaikan sebagai berikut. Kompilasi dan menambahkan alat ini ke jalur saya. Ini membutuhkan waktu kurang dari 30 detik.
Selanjutnya, saya pergi ke direktori di mana saya ingin menonton. Dalam hal ini, saya ingin menonton file penurunan harga untuk perubahan, dan jika ada perubahan, masalah a
make
.Itu dia.
sumber
brew install kqwait
dan Anda dapat mengirimkan beberapa file ke dalamnya sepertikqwait **/*
Anda mungkin tidak perlu membandingkan md5sum jika Anda memiliki utilitas diff yang tersedia.
itu! negates eg true jika pernyataan itu salah
Peringatan adalah Anda memerlukan file asli untuk membandingkan dengan diff yang (imo) sama dengan apa yang dilakukan skrip md5sum di atas.
sumber
diff -q
, jikadiff
mendukungnya.-q
berarti "laporkan jika hanya file berbeda", bukan perbedaannya. Jadidiff -q
berhentilah membandingkan perbedaan saat dilihat, yang dapat menjadi kinerja yang sangat bijaksana. Lihat dokumentasi GNU , misalnya. Jika seluruh titik jawaban Anda menjadi efisien dengan tidak menggunakanmd5sum
, maka tidak menggunakandiff -q
jika tersedia mengalahkan titik itu.Anda dapat mencoba
entr
alat baris perintah, missumber
entr
perlu diinstal atau setidaknya itulah yang terjadi untuk Ubuntu. Itu harus hadir dalam repositori paling distor di luar sana.jika Anda memeriksa perubahan dalam git repo, Anda dapat menggunakan:
sumber
Sebuah.
cp orginalfile fileneedto_be_changed
'(Hanya perlu melakukan satu kali)b.
sumber