diff options
author | Karel Kočí <karel.koci@nic.cz> | 2018-08-02 13:52:42 +0200 |
---|---|---|
committer | Karel Kočí <karel.koci@nic.cz> | 2018-08-02 13:52:42 +0200 |
commit | fe047338d08c73e7fa513777a792d78237107e71 (patch) | |
tree | ec6be1d2e6f5ee09c1d91e97a10c4b243ba6f708 /shellrc.d/common | |
parent | 8bd8b693baa3d24dc84638c714650c60e2c814d2 (diff) | |
download | shellrc-fe047338d08c73e7fa513777a792d78237107e71.tar.gz shellrc-fe047338d08c73e7fa513777a792d78237107e71.tar.bz2 shellrc-fe047338d08c73e7fa513777a792d78237107e71.zip |
Add inotify based inrun and insurf
Diffstat (limited to 'shellrc.d/common')
-rw-r--r-- | shellrc.d/common | 24 |
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 + ) +} |