overview | download 4.7 | man page
Rebuild project if sources change
$ ls | entr make
Rebuild project and run tests if the build was successful
$ ls | entr -s 'make && make test'
ls(1)in that they recognize files by their contents and are smart enough to skip directories such as
adheres to the principle of separation
of concerns, yet the reload
option was added to solve a common use case that would otherwise require
some careful scripting:
$ ls *.rb | entr -r ruby main.rb
Other special-purpose flags were added because they reduce highly
repetitive actions or reduce friction. One of the most repetitive actions
was to clear the screen before running tests; hence the
$ ls -d * | entr -c ./test.sh
argument (somewhat analogous to
in Perl) provides a quick way to refer to the first file that changed.
When a single file is listed this is a handy way to avoid typing a
$ ls *.sql | entr psql -f /_
The directory watch option (
-d) was added to react to events when a new file is added to a
relies on standard input piped from other Unix tools,
an external shell loop must be used to rescan the file system.
One way to implement this feature would be to simply require the users to
list directories, but
will infer the directories if they aren't listed explicitly
$ while true; do > ls -d src/*.py | entr -d ./setup.py > done
Some architectural limitations are for good reasons, but it's not easy to see why a particular restriction applies.
flag cannot be used with an interactive task:
STDINon the child allows
entrto accept keyboard input.
entrwere to close it's own file descriptor to
STDINthere is no reliable and immediate way to determine when the child has terminated in order to restore keyboard input.
Tstate is confusing, so we closes STDIN to raise an error instead.