كيفية تنفيذ الأمر عند تغيير الملف في Linux؟

نشرت: 2022-04-04

لقد وصلت إلى المكان الصحيح إذا كنت تريد معرفة كيفية تشغيل أوامر Linux عند تغيير أي ملف في دليل العمل وعند إنشاء ملفات جديدة.

في Linux ، يمكنك استخدام cron لجدولة الأوامر لتعمل في أوقات معينة.

ولكن ماذا لو احتجت إلى تشغيل أوامر في كل مرة يتم فيها تعديل ملف أو إضافة ملف جديد إلى دليل؟

يمكن تحقيق ذلك بسهولة ، وهناك بعض أدوات سطر الأوامر للقيام بذلك.

هيا بنا نبدأ!

واتشكسك

watchexec هي أداة يدوية ومستقلة تراقب دليل عمل معين وتنفذ أمرًا إذا اكتشف أي تغييرات مثل تحديث الملف أو إنشاء ملف جديد.

سمات

  • لا يتطلب سطر أوامر معقدًا يتضمن xargs (وسيطات موسعة).
  • للتحقق من التغييرات في الدليل الحالي وجميع الأدلة الفرعية في الوقت الفعلي.
  • ليست هناك حاجة لوقت تشغيل اللغة ، ولا يرتبط بأي لغة أو نظام بيئي معين.
  • يتم استخدام .gitignore و .ignore بشكل افتراضي لتحديد الملفات التي يتم تجاهل الإخطارات الخاصة بها.
  • تُستخدم مجموعات العمليات لتتبع برامج التفرع.
  • يتم دعم مشاهدة الملفات بامتداد معين.
  • إنه متوافق مع OS X و Linux و Windows.
  • تصفية الأحداث وتجاهلها استنادًا إلى الكرة الأرضية (يمكن استخدام أنماط البحث عن الملفات للعثور على أسماء ملفات متطابقة جزئيًا.

تركيب واتشكسيك

لتثبيت أداة watchexec بسهولة ، الصق الرابط التالي في الجهاز الطرفي أو موجه الأوامر ، واضغط على إدخال.

Linux و macOS

 curl -sS https://webinstall.dev/watchexec | bash

بعد التثبيت الناجح ، سيتم عرض المسار على الشاشة. في حالتي ، تم تثبيت هذه الأداة في /root/.local/bin

 ┌──(rootkali)-[~] └─# curl -sS https://webinstall.dev/watchexec | bash Thanks for using webi to install 'watchexec@stable' on 'Linux/x86_64'. Have a problem? Experience a bug? Please let us know: https://github.com/webinstall/webi-installers/issues Lovin' it? Say thanks with a Star on GitHub: https://github.com/webinstall/webi-installers Found /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Extracting /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Installing to /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec Installed 'watchexec vcli-v1.18.9' as /root/.local/bin/watchexec

وبعد التثبيت ، انتقل إلى مستودع .local/bin وتحقق مما إذا كان الملف موجودًا أم لا باستخدام هذه الأوامر.

 cd .local/bin ls

الخطوة التالية هي تصدير المسار لاستخدام أداة watchexec .

 export PATH="/root/.local/bin:$PATH"

للتشغيل ، ما عليك سوى كتابة watchexec في الجهاز كمستخدم أساسي. استخدم هذا الأمر لمعرفة العلامات والخيارات التي يمكن استخدامها مع أداة watchexec.

 watchexec --help

أمثلة على أوامر

  • ls -la عندما يتغير أي ملف في هذا الدليل / الدليل الفرعي. يعرض هذا الأمر جميع الملفات الموجودة في الدليل متى اكتشف أي تعديل.
 watchexec -- ls -la
  • عندما يتغير أي من ملفات ملحق python أو js أو CSS أو Html في الدليل الحالي ، قم بتشغيل الأمر. هنا يمكنك تمرير أي أمر تريده. يجب فصل امتدادات الملفات بفاصلة.
 watchexec --exts py,js,css,html <command>
  • قم بتشغيل الأمر عندما يتغير أي ملف في lib أو src . يراقب الخيار "-w" ملفًا أو دليلًا معينًا في النظام.
 watchexec -w lib -w src <command>
  • اتصل / أعد تشغيل أي خدمة عندما يتغير أي ملف في الدليل الحالي (وجميع الأدلة الفرعية).
 watchexec -e html -r tor watchexec -e js,py -r mysql

هنا ، يقوم الخيار "-r" بإعادة تشغيل العملية أو الخدمة إذا كانت تعمل في النظام.

لمزيد من أمثلة استخدام watchexec ، يمكنك زيارة مستودع GitHub الرسمي.

إنتر

entr هي أداة مساعدة بسيطة وممتازة لسطر الأوامر لتشغيل أوامر عشوائية عند حدوث أي تعديلات في دليل معين.

يرمز " entr " إلى Event Notify Test Runne r. تم إنشاء هذه الأداة بهدف إجراء ملاحظات سريعة واختبار آلي.

تثبيت

entr مثبت مسبقًا في توزيعة Linux. في حالة فقدها ، تحتاج إلى تثبيتها يدويًا.

هذه الأداة سهلة الاستخدام ويمكن تثبيتها بالأمر التالي.

 sudo apt-get install entr

أو يمكنك أيضًا تثبيته عن طريق استنساخ مستودع Git الرسمي.

 git clone https://github.com/eradman/entr.git

بعد ذلك ، انتقل إلى هذا الدليل وقم بتثبيت المتطلبات باستخدام الأوامر أدناه.

 ./configure make test make install

لرؤية خيارات البناء المتاحة ، قم بتشغيل ./configure -h

أمثلة على أوامر

لمشاهدة الخيارات والوسيطات المتاحة لأمر entr . استخدم الأمر التالي.

 man entr

يعرض هذا الأمر دليل المستخدم لأمر entr .

 NAME entr — run arbitrary commands when files change SYNOPSIS entr [-acdnprsz] utility [argument /_ ...] DESCRIPTION A list of files provided on standard input, and the utility is executed using the supplied arguments if any of them change. entr waits for the child process to finish before responding to subsequent file system events. A TTY is also opened before entering the watch loop in order to support interac‐ tive utilities. The arguments are as follows: -a Respond to all events which occur while the utility is running. Without this option, entr consolidates events in order to avoid looping. This option has no effect in conjunction with the -r flag. -c Clear the screen before invoking the utility specified on the command line. Specify twice to erase the scroll back buffer. -d Track the directories of regular files provided as input and exit if a new file is added. This option also enables directories to be specified explicitly. If specified twice, all new entries to a directory are recognized, otherwise files with names beginning with '.' are ig‐ nored. -n Run in non-interactive mode. In this mode entr does not attempt to read from the TTY or change its properties. -p Postpone the first execution of the utility until a file is modified. Manual page entr(1) line 1 (press h for help or q to quit)
  • لتشغيل خادم MySQL وإعادة تحميله تلقائيًا عندما يتغير أي ملف JavaScript في دليل العمل. في كل مرة يتم فيها حفظ التغييرات في الملف ، يقوم entr بإعادة تحميل خادم MySQL.
 ls *.js | entr -r mysql
  • لإعادة تحميل خادم الويب تلقائيًا أو الإنهاء إذا خرج الخادم.
 $ ls * | entr -rz ./httpd

لمزيد من التفاصيل والأمثلة على الأمر entr ، يمكنك زيارة مستودع GitHub الرسمي.

الكلمات الأخيرة

أتمنى أن تكون قد وجدت هذه المقالة مفيدة جدًا في تعلم كيفية تشغيل أوامر Linux عندما يتغير أي ملف في دليل معين وعندما يتم إنشاء ملفات جديدة.

قد تكون مهتمًا أيضًا بمعرفة كيفية إزالة الملفات والأدلة في Linux.