Сценарий Bash, просмотр папки, выполнение команды - PullRequest
35 голосов
/ 25 июня 2011

Я пытаюсь создать bash-скрипт, который принимает 2 параметра: каталог и команду.Мне нужно следить за этим каталогом на предмет изменений, и когда что-то изменилось, мне нужно выполнить команду.Я действительно новичок в bash-скриптинге и не совсем уверен в том, что делаю, так что будьте спокойны со мной.Я также на Mac, а не Linux.Любые указатели или внешние ресурсы очень помогли бы.Я знаю, что многие люди пробуют это в Интернете, и никто не может сделать это правильно.Я действительно пытаюсь имитировать функциональность часов SASS.

#!/bin/bash

#./watch.sh $PATH $COMMAND

DIR=$1  

ls -l $DIR > $DIR/.begin
#this does not work
DIFFERENCE=$(diff .begin .end)

if [ $DIFFERENCE = '\n']; then
    #files are same
else
    $2
fi 

ls -l $DIR > $DIR/.end

Ответы [ 12 ]

0 голосов
/ 21 июня 2012

Если вам нужно только проверить файлы, которые создаются / удаляются на верхнем уровне (не проверяя подпапки), вы можете использовать следующее.

Он использует несколько ресурсов, следовательно, может реагировать быстро, я использую егопроверить наличие измененного файла.

#!/bin/bash

file="$1"
shift

tmp=$(mktemp)
trap 'rm "$tmp"' EXIT

while true; do
    while [ ! "$tmp" -ot "$file" ]; do
        sleep 0.5
    done
    eval "$@ &"
    echo $! > "$tmp"
    wait
done
0 голосов
/ 25 июня 2011

Почему бы не использовать AppleScript

http://www.tuaw.com/2009/03/26/applescript-exploring-the-power-of-folder-actions-part-iii/

on adding folder items to this_folder after receiving added_items
tell application "Finder"
...
...