run shell commands on arbitrary file changes