파일 변경 사항이 있는지 폴더 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 launchdman launchd.plist더 많은 정보를 얻을 수 있습니다.


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

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