ENTR(1) General Commands Manual ENTR(1)

entr — اجرای دستورهای دلخواه به هنگام تغییر فایل‌ها

entr [-acdnprsxz] utility [argument /_ ...]

فهرستی از فایل‌ها از طریق ورودی استاندارد فراهم می‌شود، و در صورت تغییر هر یک از آن‌ها، utility با آرگومان‌های ارائه‌شده اجرا می‌گردد. entr پیش از پاسخ به رویدادهای بعدی سامانه فایل، منتظر پایان فرآیند فرزند می‌ماند. همچنین پیش از ورود به حلقهٔ پایش، یک TTY باز می‌شود تا از ابزارهای تعاملی پشتیبانی به عمل آید.

آرگومان‌ها به شرح زیر هستند:

پاسخ به تمامی رویدادهایی که هنگام اجرای utility رخ می‌دهند. بدون این گزینه، entr رویدادها را یکپارچه می‌کند تا از افتادن در حلقه جلوگیری کند. این گزینه در ترکیب با پرچم -r بی‌اثر است.
پاک کردن صفحه پیش از فراخوانی utility مشخص‌شده در خط فرمان. مشخص کردن دو بارهٔ آن موجب پاک شدن بافر پیمایش (scrollback) می‌شود.
ردیابی دایرکتوری والد فایل‌های عادیِ ارائه‌شده به عنوان ورودی. اگر دو بار مشخص شود، تمام ورودی‌های جدید به یک دایرکتوری شناسایی می‌شوند، در غیر این صورت فایل‌هایی که نامشان با ‘.’ آغاز می‌شود نادیده گرفته خواهند شد.
اجرا در حالت غیرتعاملی. در این حالت entr تلاشی برای خواندن از TTY یا تغییر ویژگی‌های آن نمی‌کند.
به تعویق انداختن نخستین اجرای utility تا زمانی که فایلی تغییر یابد.
بارگذاری مجدد (reload) یک فرآیند فرزند ماندگار. همانند حالت استاندارد عملکرد، یک utility که پایان می‌یابد تا زمان پردازش یک رویداد سامانه فایل یا صفحه‌کلید، دوباره اجرا نخواهد شد. یک گروه فرآیند (process group) ایجاد می‌شود تا از پوشانده شدن سیگنال‌ها توسط اسکریپت‌های شل جلوگیری شود. entr منتظر خروج utility می‌ماند تا از بسته شدن منابعی مانند سوکت‌ها اطمینان حاصل شود. کنترل TTY به فرآیند فرزند منتقل نمی‌شود.
ارزیابی نخستین آرگومان با استفاده از مفسر مشخص‌شده توسط متغیر محیطی SHELL.
قالب‌بندی پیام‌های وضعیت خروج سفارشی با استفاده از یک فرآیند ماندگار awk(1). مسیر اسکریپت وضعیت توسط متغیر محیطی ENTR_STATUS_SCRIPT تعیین می‌شود. اگر اسکریپت وضعیت وجود نداشته باشد، entr یک نمونه ایجاد خواهد کرد. دستورهای شل و تغییر مسیر فایل به طور پیش‌فرض مجاز نیستند، اما می‌توان با دو بار مشخص کردن -x آن‌ها را فعال کرد.
خروج پس از تکمیل کار utility. هنگام ترکیب با -r -، ابزار utility تنها در پاسخ به دستورها یا رویدادهای سامانه فایل مجدداً راه‌اندازی خواهد شد.

نخستین آرگومان با نام /_ با مسیر مطلق نخستین فایلی که رویداد را برانگیخته است جایگزین می‌شود. نخستین فایل تحت پایش به عنوان پیش‌فرض استفاده می‌شود. اگر گزینهٔ -s استفاده شود، نام نخستین فایلی که رویداد را برانگیخته است را می‌توان از $0 خواند.

entr به ورودی صفحه‌کلید گوش فرا می‌دهد و به دستورهای زیر پاسخ می‌دهد:

⟨space⟩
اجرای فوری ابزار. اگر گزینهٔ -r تنظیم شده باشد، این کار فرآیند فرزند را متوقف کرده و مجدداً راه‌اندازی می‌کند، گویی یک رویداد تغییر فایل رخ داده است.
خروج؛ معادل فشردن ⟨control-C⟩.

مسیر اسکریپت وضعیت خروج که توسط گزینهٔ -x فعال می‌شود. به طور پیش‌فرض $HOME/.entr/status.awk ارزیابی می‌شود.
سیگنال مورد استفاده برای پایان دادن به utility. نام‌های سیگنال پشتیبانی‌شده عبارتند از HUP ، INT ، QUIT ، TERM ، USR1 و USR2. پیش‌فرض SIGTERM است.
چاپ پیام‌های رویدادهای سامانه فایل.
به طور پیش‌فرض روی /bin/cat تنظیم شده تا در صورتی که خروجی در صفحه جا نشود، از منتظر ماندن ابزارهای تعاملی برای دریافت ورودی صفحه‌کلید جلوگیری کند.
مشخص کردن شل مورد استفاده همراه با پرچم -s. پیش‌فرض /bin/sh است.

اگر پرچم -z تنظیم شده باشد و utility با موفقیت اجرا شود، وضعیت فرآیند فرزند بازگردانده می‌شود. اگر فرآیند فرزند توسط یک سیگنال متوقف شده باشد، وضعیت خروج برابر با شماره سیگنال به علاوهٔ ۱۲۸ خواهد بود.

entr به طور معمول یکی از مقادیر زیر را بازمی‌گرداند:

0
خاتمهٔ عادی پس از دریافت SIGINT
1
هیچ فایل عادی در ورودی ارائه نشد یا خطایی رخ داد
2
فایل‌هایی به یک دایرکتوری اضافه یا از آن حذف شدند

بازسازی یک پروژه در صورت تغییر فایل‌های مبدأ، با محدود کردن خروجی به ۲۰ خط نخست:

$ find src/ | entr -s 'make | head -n 20'

اجرا و بارگذاری مجدد خودکار یک سرور node.js:

$ ls *.js | entr -r node app.js

پاک کردن صفحه و اجرای یک پرس‌وجو پس از به‌روزرسانی اسکریپت SQL:

$ echo my.sql | entr -cp psql -f /_

بازسازی پروژه در صورت ویرایش یک فایل مبدأ یا اضافه شدن فایلی به دایرکتوری src/:

$ while sleep 0.1; do ls -d src src/*.rb | entr make; done

بارگذاری مجدد خودکار یک وب‌سرور، یا خاتمه یافتن برنامه در صورت خروج سرور:

$ ls * | entr -rz ./httpd
March 2, 2026 Linux 6.12.113+deb13-amd64