| ENTR(1) | General Commands Manual | ENTR(1) |
entr — run
arbitrary commands when files change
entr |
[-acdnprsxz] utility
[argument /_ ...] |
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 interactive
utilities.
The arguments are as follows:
-aentr consolidates
events in order to avoid looping. This option has no effect in conjunction
with the -r flag.-c-d.’ are ignored.-nentr
does not attempt to read from the TTY or change its properties.-p-rSIGTERM is used to terminate the
utility before it is restarted. A process group is
created to prevent shell scripts from masking signals.
entr waits for the utility
to exit to ensure that resources such as sockets have been closed. Control
of the TTY is not transferred to the child process.-sSHELL environment variable.-xENTR_STATUS_SCRIPT. If the status script does not
exist, entr will create an example. Shell commands
and file redirection is not permitted by default, but may be enabled by
specifying -x twice.-z-r the utility will be
restarted again only in response to commands or file system events.The first argument named /_ is replaced with
the absolute path of the first file to trigger an event. The first file
under watch is used as the default. If the -s option
is used, the name of the first file to trigger an event can be read from
$0.
entr listens for keyboard input and
responds to the following commands:
space⟩-r option is set this will
terminate and restart the child process as if a file change event had
occurred.qcontrol-C⟩.ENTR_STATUS_SCRIPT-x option. By default
$HOME/.entr/status.awk is evaluated.PAGERSHELL-s flag. The
default is /bin/sh.EV_TRACEIf the -z flag is set and the
utility is successfully executed, the status of the
child process is returned. If the child process was terminated by a signal,
the exit status is the signal number plus 128.
entr normally returns one of the following
values:
SIGINTRebuild a project if source files change, limiting output to the first 20 lines:
$ find src/ | entr -s 'make | head -n
20'Launch and auto-reload a node.js server:
$ ls *.js | entr -r node
app.jsClear the screen and run a query after the SQL script is updated:
$ echo my.sql | entr -cp psql -f
/_Rebuild project if a source file is modified or added to the src/ directory:
$ while sleep 0.1; do ls src/*.rb |
entr -d make; doneAuto-reload a web server, or terminate if the server exits
$ ls * | entr -rz
./httpd| February 6, 2025 | x86_64 |