วิธีดำเนินการคำสั่งเมื่อไฟล์เปลี่ยนแปลงใน Linux

คุณมาถูกที่แล้ว หากคุณต้องการเรียนรู้วิธีเรียกใช้คำสั่ง Linux เมื่อไฟล์ใดๆ ในไดเร็กทอรีที่ใช้งานมีการเปลี่ยนแปลงและเมื่อไฟล์ใหม่ถูกสร้างขึ้น

ใน Linux คุณสามารถใช้ cron เพื่อกำหนดเวลาให้คำสั่งทำงานในบางช่วงเวลา

แต่ถ้าคุณต้องการให้รันคำสั่งทุกครั้งที่ไฟล์ถูกแก้ไข หรือไฟล์ใหม่ถูกเพิ่มเข้าไปในไดเร็กทอรีล่ะ?

นอกจากนี้ยังทำได้อย่างง่ายดายและมีเครื่องมือบรรทัดคำสั่งบางอย่างที่จะดำเนินการนั้น

มาเริ่มกันเลย!

watchexec

watchexec เป็นเครื่องมือที่มีประโยชน์และเป็นแบบสแตนด์อโลนที่ตรวจสอบไดเร็กทอรีการทำงานที่กำหนดและรันคำสั่งหากตรวจพบการเปลี่ยนแปลงใดๆ เช่น การอัพเดตไฟล์หรือการสร้างไฟล์ใหม่

คุณสมบัติ

  • ไม่ต้องการบรรทัดคำสั่งที่ซับซ้อนที่เกี่ยวข้องกับ xargs (อาร์กิวเมนต์เพิ่มเติม)
  • ตรวจสอบการเปลี่ยนแปลงในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยทั้งหมดแบบเรียลไทม์
  • ไม่จำเป็นต้องมีรันไทม์ของภาษา และไม่มีการเชื่อมต่อกับภาษาหรือระบบนิเวศเฉพาะใดๆ
  • .gitignore และ .ignore ถูกใช้โดยค่าเริ่มต้นเพื่อตัดสินใจว่าไฟล์ใดที่จะละเว้นการแจ้งเตือน
  • กลุ่มกระบวนการใช้เพื่อติดตามโปรแกรมการฟอร์ก
  • รองรับการรับชมไฟล์ที่มีนามสกุลเฉพาะ
  • มันเข้ากันได้กับ OS X, Linux และ Windows
  • การกรองและละเว้นเหตุการณ์ตาม glob (รูปแบบการค้นหาไฟล์สำหรับการค้นหาชื่อไฟล์ที่เหมือนกันบางส่วนเป็นไปได้

การติดตั้ง watchexec

ในการติดตั้งเครื่องมือ watchexec อย่างง่ายดาย ให้วางลิงก์ต่อไปนี้ลงในเทอร์มินัลหรือพร้อมต์เชลล์ แล้วกด Enter

Linux & macOS

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

หลังจากติดตั้งสำเร็จแล้ว เส้นทางจะแสดงบนหน้าจอ ในกรณีของฉัน เครื่องมือนี้ถูกติดตั้งใน /root/.local/bin

┌──(root💀kali)-[~]
└─# curl -sS https://webinstall.dev/watchexec | bash

Thanks for using webi to install '[email protected]' 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” จะรีสตาร์ทกระบวนการหรือบริการหากทำงานอยู่ในระบบ

  วิธีสร้างนามแฝงและฟังก์ชันเชลล์บน Linux

สำหรับตัวอย่างการใช้งาน watchexec เพิ่มเติม คุณสามารถไปที่ ที่เก็บ GitHub อย่างเป็นทางการ.

ทางเข้า

ทางเข้า เป็นยูทิลิตีบรรทัดคำสั่งที่เรียบง่ายและยอดเยี่ยมสำหรับการรันคำสั่งโดยพลการเมื่อมีการแก้ไขใดๆ เกิดขึ้นในไดเร็กทอรีที่กำหนด

“entr” ย่อมาจาก Event Notify Test Runner เครื่องมือนี้สร้างขึ้นโดยมีเป้าหมายเพื่อให้ข้อเสนอแนะอย่างรวดเร็วและการทดสอบอัตโนมัติ

การติดตั้ง

entr ถูกติดตั้งไว้ล่วงหน้าในการแจกจ่าย Linux ในกรณีที่หายไป คุณต้องติดตั้งด้วยตนเอง

เครื่องมือนี้ใช้งานง่ายและสามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้

sudo apt-get install entr

หรือคุณสามารถติดตั้งได้โดยการโคลนอย่างเป็นทางการ ที่เก็บ Git.

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

จากนั้นไปที่ไดเร็กทอรีนั้นและติดตั้งข้อกำหนดโดยใช้คำสั่งด้านล่าง

./configure
make test
make install

หากต้องการดูตัวเลือกบิลด์ที่มีอยู่ให้เรียกใช้ ./configure -h

ตัวอย่างคำสั่งตัวอย่าง

เพื่อดูตัวเลือกและอาร์กิวเมนต์ที่มีให้สำหรับคำสั่ง enter ใช้คำสั่งต่อไปนี้

man entr

คำสั่งนี้แสดงคู่มือผู้ใช้สำหรับคำสั่ง enter

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 คุณสามารถไปที่ official ที่เก็บ GitHub.

  วิธีการติดตั้งธีม Neo-to GTK บน Linux

คำพูดสุดท้าย 👩‍💻

ฉันหวังว่าคุณจะพบบทความนี้มีประโยชน์มากในการเรียนรู้วิธีเรียกใช้คำสั่ง Linux เมื่อไฟล์ใด ๆ ในไดเร็กทอรีที่กำหนดและเมื่อสร้างไฟล์ใหม่

คุณอาจสนใจที่จะเรียนรู้วิธีลบไฟล์และไดเร็กทอรีใน Linux

เรื่องล่าสุด

x