लिनक्स फाइल बनाने, संशोधित करने, हटाने जैसी सभी फाइल सिस्टम घटनाओं की निगरानी के लिए एक अच्छा इंटरफ़ेस प्रदान करता है। इंटरफ़ेस inotifyसिस्टम कॉल का परिवार है, इन कॉलों का लाभ उठाने वाली उपयोगकर्ता सुविधाएं inotify-toolsउबंटू में पैकेज (ब्रह्मांड भंडार पर उपलब्ध) द्वारा प्रदान की जाती हैं । यदि आपके पास यह पहले से नहीं है, तो इसके द्वारा स्थापित करें:
sudo apt-get install inotify-tools
inotify-toolsप्रदान करता है inotifywaitऔर inotifywatchबायनेरिज़, हमें पहले वाले की आवश्यकता है।
इसलिए आप asciidoctor -q some_fileकिसी भी .adocफाइल को संशोधित करने पर कमांड चलाना चाहते हैं ( some_fileउस से बदल दिया जाएगा), यदि ऐसा है तो मान लें कि आपकी .adocफाइलें निर्देशिका में हैं /foo/bar, आप घड़ी सेट कर सकते हैं:
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-qशांत मोड को सक्षम करता है, inotifywaitस्वयं से कोई जानकारी नहीं
-m मॉनिटर मोड को सक्षम करता है, अन्यथा यह पहली घटना के बाद बाहर निकल जाएगा
--event modify, हम केवल modifyइवेंट में रुचि रखते हैं यानी जब कोई फाइल संशोधित होती है। अन्य संभावित मूल्यों में शामिल हैं open, closeआदि।
--format %w, हम केवल उस फ़ाइल का नाम चाहते हैं जिसे अन्य जानकारी के बजाए संशोधित किया गया है क्योंकि हम फ़ाइल नाम का उपयोग किसी अन्य कमांड के इनपुट के रूप में करेंगे
/foo/bar/*.adocनिर्देशिका के .adocतहत सभी फ़ाइलों के लिए विस्तारित किया जाएगा/foo/bar
अब ऊपर आपको फ़ाइल नाम दिखाएगा जब भी कोई संशोधित किया जाता है, अब फ़ाइल नाम पर कमांड को चलाने के लिए (यह मानते हुए कमांड एसटीडीआईएन के माध्यम से तर्क लेता है):
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc | asciidoctor -q
आप निर्देशिका पर एक पुनरावर्ती घड़ी भी सेट कर सकते हैं, आपको तब grepकेवल वांछित फ़ाइलों को फ़िल्टर करने के लिए उपयोग करने की आवश्यकता होगी । यहाँ -rनिर्देशिका पर पुनरावर्ती रूप से ( ) सेट करना /foo/barऔर grepकेवल .adocफ़ाइलों को फ़िल्टर करने के लिए उपयोग करना :
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
जब निर्देशिकाओं को देखते हुए आउटपुट स्वरूप निर्दिष्ट होता है %w, तो वह निर्देशिका नाम के रूप में होता है, इसलिए हमें %fफ़ाइल नाम प्राप्त करने की आवश्यकता होती है। फाइलें देखते समय, %fखाली स्ट्रिंग को हल करेगा।
ध्यान दें, आप inotifywaitडेमॉन ( -d) मोड में भी चला सकते हैं , आप पूरी चीज़ को स्क्रिप्ट भी कर सकते हैं, और / या बैकग्राउंड में चला सकते हैं, और / या इसके साथ और भी अन्य विकल्प खेल सकते हैं।
इसके अलावा, asciidoctorयदि आप चाहें, तो आप अपनी पसंद के किसी भी अन्य कमांड से बदल सकते हैं।
man inotifywaitअधिक विचार प्राप्त करने के लिए जाँच करें ।