|ENTR(1)||General Commands Manual||ENTR(1)|
entr — run
arbitrary commands when files change
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
The arguments are as follows:
entrconsolidates events in order to avoid looping. This option has no effect in conjunction with the
.’ are ignored.
entrdoes not attempt to read from the TTY or change its properties.
SIGTERMis used to terminate the utility before it is restarted. A process group is created to prevent shell scripts from masking signals.
entrwaits 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.
SHELLenvironment variable. If standard output is a TTY, the name of the shell and exit code is printed after each invocation.
-rthe 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
is used, the name of the first file to trigger an event can be read from
entr listens for keyboard input and
responds to the following commands:
roption is set this will terminate and restart the child process as if a file change event had occurred.
PAGER is undefined,
entr will assign /bin/cat to
prevent interactive utilities from waiting for keyboard input if output does
not fit on the screen.
SHELL is undefined,
entr will use /bin/sh.
entr utility exits with one of the
-zflag was set and the utility was executed successfully
Rebuild a project if source files change, limiting output to the first 20 lines:
$ find src/ | entr -s 'make | sed 20q'
Launch and auto-reload a node.js server:
$ ls *.js | entr -r node app.js
Clear 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 true; do ls src/*.rb | entr -d make; done
Auto-reload a web server, or terminate if the server exits
$ ls * | entr -rz ./httpd
|April 17, 2020||OpenBSD 6.7|