aboutsummaryrefslogtreecommitdiff
path: root/shellrc.d/common
diff options
context:
space:
mode:
Diffstat (limited to 'shellrc.d/common')
-rw-r--r--shellrc.d/common24
1 files changed, 24 insertions, 0 deletions
diff --git a/shellrc.d/common b/shellrc.d/common
index 6fbbfc1..8a30f3b 100644
--- a/shellrc.d/common
+++ b/shellrc.d/common
@@ -103,3 +103,27 @@ ssh-clear() {
chroot-bash() {
sudo chroot "$1" /bin/bash
}
+
+# Run command with inotifywait
+# First argument has to be files then -- is expected and everything else
+# is command to be executed when file changes.
+inrun () {
+ (
+ set -e
+ local TMPFS="$(mktemp --tmpdir inrun.XXXXXXXX)"
+ trap "rm '$TMPFS'; trap '' EXIT; exit 0" EXIT INT QUIT TERM ABRT
+ while [ $# -gt 0 -a "$1" != "--" ]; do
+ echo "$1" >> "$TMPFS"
+ shift
+ done
+ if [ $# -le 1 ]; then
+ echo "Usage: inrun FILE.. -- COMMAND"
+ return 1
+ fi
+ shift
+ while true; do
+ inotifywait -qe close_write --fromfile "$TMPFS" || true
+ "$@" || true
+ done
+ )
+}