entr
Runs arbitrary commands when files change using kqueue or inotify to avoid polling
entr is a file watching utility that executes arbitrary commands when files change. It uses kqueue(2) on BSD/macOS and inotify(7) on Linux to monitor filesystem events without polling, making it efficient for continuous monitoring scenarios.
The tool accepts file lists via stdin and can restart processes with the -r flag, clear the screen with -c, or terminate when a monitored process exits using -z. It supports running shell commands with -s and can be configured to monitor directory additions with -d. entr handles common development workflows like auto-reloading servers, rebuilding projects on source changes, and running tests when files are modified.
Developers use entr for rapid feedback loops during development, such as automatically rebuilding projects when source files change, restarting Node.js servers, or re-running database queries when SQL files are updated. The utility includes workarounds for environments with incomplete inotify support like Docker for Mac and Windows Subsystem for Linux through the ENTR_INOTIFY_WORKAROUND environment variable.
Installation
# via Source
./configure && make test && make install
Alternatives & related tools
Chafa
Command-line utility that converts images and animated GIFs into ANSI/Unicode character art or terminal graphics formats, built on a C library.
radare2
Command-line reverse engineering framework for disassembling, analyzing, emulating, debugging and patching binaries across many architectures and file formats.
FFmpeg
Collection of libraries and command-line tools (ffmpeg, ffplay, ffprobe) for converting, streaming, playing and inspecting audio, video and subtitles.
Docker CLI
Source repository for the Docker command-line client, written in Go and built with docker buildx bake, with cross-platform and glibc/musl build targets.
Bats-core
TAP-compliant testing framework for Bash 3.2+ that runs test cases written as Bash functions to verify Bash scripts and other UNIX programs.
add a badge to your README
Maintain entr? Show that it's featured on trmn. The badge links back to this page.
[](https://www.trmn.sh/tools/entr?utm_source=badge)<a href="https://www.trmn.sh/tools/entr?utm_source=badge"><img src="https://www.trmn.sh/badge/entr.svg" alt="Featured on trmn" height="20"></a>