Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ENTR(1)			FreeBSD	General	Commands Manual		       ENTR(1)

     entr -- run arbitrary commands when files change

     entr [-acdprs] 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:

     -a	     Respond to	all events which occur while the utility is running.
	     Without this option, entr consolidates events in order to avoid
	     looping.  This option has no effect in conjunction	with the -r

     -c	     Execute /usr/bin/clear before invoking the	utility	specified on
	     the command line.

     -d	     Track the directories of regular files provided as	input and exit
	     if	a new file is added.  This option also enables directories to
	     be	specified explicitly.  Files with names	beginning with `.' are

     -n	     Run in non-interactive mode.  In this mode	entr does not attempt
	     to	read from the TTY or change its	properties.

     -p	     Postpone the first	execution of the utility until a file is modi-

     -r	     Reload a persistent child process.	 As with the standard mode of
	     operation,	a utility which	terminates is not executed again until
	     a file system or keyboard event is	processed.  SIGTERM 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.

     -s	     Evaluate the first	argument using the interpreter specified by
	     the SHELL environment variable.  If standard output is a TTY, the
	     name of the shell and exit	code is	printed	after each invocation.

     -z	     Exit after	the utility completes.	When combined with -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>  Execute the utility immediately.	If the -r option is set	this
	      will terminate and restart the child process as if a file	change
	      event had	occurred.

     q	      Quit; equivalent pressing	<control-C>.

     If	PAGER is undefined, entr will assign /bin/cat to prevent interactive
     utilities from waiting for	keyboard input if output does not fit on the

     If	SHELL is undefined, entr will use /bin/sh.

     The entr utility exits with one of	the following values:

	   0	   Normal termination after receiving SIGINT or	the -z flag
		   was set and the utility was executed	successfully
	   1	   No regular files were provided as input or an error oc-
	   2	   A file was added to a directory and the directory watch op-
		   tion	was specified

     Rebuild a project if source files change, limiting	output to the first 20

	   $ 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/ direc-

	   $ 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

FreeBSD	13.0			April 17, 2020			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help