파일 변경 사항이 있는지 폴더 OSX를 모니터 한 다음 bash 스크립트를 실행하십시오. [중복]


9

중복 가능성 :
OS X 및 Ubuntu에서 실시간으로 파일 시스템보기

OSX에서 로컬 디렉토리를 모니터링하는 효율적인 방법을 찾고 있는데 해당 디렉토리에서 파일이 변경된 경우 bash 스크립트를 실행하여 파일을 github에 커밋하십시오.

파일 변경을 위해 디렉토리를 모니터링 한 다음 bash 스크립트와 같은 동작을 트리거하는 권장 도구가 있습니까?


1
이 질문은있는 그대로 소프트웨어 권장 사항이며, 일반적으로 수퍼 유저 에게는 허용되지 않습니다 . "파일을 추가 / 삭제 / 변경할 때마다 자동으로 변경 사항을 커밋하고 git repo에서 푸시하려면 어떻게해야합니까?"
— 다스 안드로이드

@DarthAndroid, FAQ에 따르면이 질문은 괜찮습니다. OP는 쇼핑이나 구매 조언을 요구하지 않습니다.
— ephsmith

1
@eph OP는 주제에 대한 추천을 요구하고 있습니다. 그러나 주요 문제는 문제를 설명하지 않고 시도한 해결책 만 요구한다는 것입니다.
— slhck

문제는 간단합니다. 디렉토리에서 변경 사항을 모니터하고 해당 변경 사항을 저장소에 커미트하십시오. 모두 OP의 질문에 있습니다. 제공하신 링크에 답변이 있습니다. 잘 했어
— ephsmith

답변:


17

저장소에서 fswatch 사용

fswatch . 'git commit -avm "snapshot at ${date}"'

이 간단한 예제는 이미 리포지토리에있는 파일의 변경 사항 만 포착합니다.


이것은 OS X에 내장 된 폴더 작업으로 수행 할 수 있습니다. 위에 제공된 링크를 통해 답변을 참조하십시오.
— ephsmith

1
OP가 달성하고자하는 것을 설명하는 예를 추가하여 답변을 확장 할 수 있습니다. 링크를 게시하는 것은 권장되지 않습니다.
— slhck

이것은 고무적으로 보입니다. 나는 ./fswatch를 실행할 수 있습니다 생각 / 일부 / 디렉토리 ./some/dir/bash_script.sh
— Tegan 스나이더

+1- fswatch답변을 읽은 후 시도했습니다 . 뛰어난 유틸리티 – inotify리눅스와 매우 유사하며 OS X의 네이티브를 사용합니다fsevent
— cwd

2

한 가지 옵션은 launchd를 사용하는 것입니다. 이와 같은 속성 목록을로 저장하고 로그 아웃 한 후 다시 ~/Library/LaunchAgents/com.superuser.445907.plist로드하십시오 launchctl load ~/Library/LaunchAgents/com.superuser.445907.plist.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.445907</string>
    <key>Program</key>
    <string>/Users/username/script</string> <!-- ~/ doesn't work -->
    <key>WatchPaths</key>
    <array>
        <string>/Users/username/Folder/</string>
    </array>
    <key>ThrotteInterval</key>
    <integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>

시작은 파일을 원자 적으로 저장하거나 파일을 저장할 때마다 삭제하고 다시 작성할 때만 변경 사항을 등록합니다. 대부분의 OS X 응용 프로그램은 기본적으로 원자 저장을 수행하지만 예를 들어 TextMate 및 vim은 자동 저장을 수행하지 않습니다. 감시 폴더의 하위 폴더 변경 사항이 감지되지 않습니다.

launchctl unload $path && launchctl load $path plist에 변경 사항을 적용합니다.

참조 man launchd및 man launchd.plist더 많은 정보를 얻을 수 있습니다.


재미있는 접근법. 나는 그것을보고 당신에게 돌아올 것입니다. 피드백을 주셔서 감사합니다.
— Tegan Snyder

이 방법에는 한계가 있습니다. 감시 폴더의 하위 폴더에서 변경 사항을 감지 할 수 없습니다. 이 기술은 또한 어떤 파일에 이벤트 (새 파일, 수정, 삭제 등)가 있는지를 알려주지 않고 경로에 이벤트가 있다는 것을 알려줍니다.
— Volomike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.