파일이 변경될 때마다 자동으로 명령을 실행합니다.

파일이 변경될 때마다 자동으로 명령을 실행합니다.

파일을 변경하고 저장할 때마다 명령을 실행하고 싶습니다. 파일을 모니터링하고 원하는 대로 명령을 실행할 수 있는 Ruby 스크립트를 설정할 수 있지만 이를 수행하려면 몇 가지 간단한 Unix 방법이 있어야 한다는 생각이 들었습니다. 거기 있나요? 나는 약간 덜 모호하게 우분투 8.10을 사용하고 있습니다.

편집하다:

incron제안받았는데 괜찮아 보이네요. 하지만 작동시키는 데 문제가 있습니다(편집: 지정된 디렉터리에 파일을 저장할 때 명령이 실행되지 않는 것 같거나 명령에 결함이 있습니다). incron을 설치하고 incrontab을 사용하여 사용자의 incron 테이블을 설정하고 해당 사용자를 허용 목록에 추가했습니다. 내 구체적인 상황은 TeX 파일을 편집하는 것입니다. TeX 파일을 편집하고 저장할 때마다 실행할 수 있도록 PDF로 렌더링하는 명령을 원합니다. 그래서 이것은 제가 생각해낸 인크론 테이블 항목입니다.

/home/ehsanul/Documents/latex IN_CLOSE_WRITE echo $@/$# | grep \\.tex$ | xargs xelatex

내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

어떤 Unix를 사용하고 있는지는 밝히지 않았지만 Linux에는inotify그리고 거기에inotify 도구그리고증분.

이있다루비 인터페이스inotify.

답변2

직접적으로는 아닙니다. (제가 익숙하지 않은 파일 시스템에 어떤 종류의 후크가 있지 않는 한).

표준 방법을 통해 파일을 편집합니까? 그렇다면 시스템 수준보다는 해당 각도에서 명령을 자동화하는 것이 더 쉬울 것입니다.

현재 상황을 좀 더 자세히 알려주시면 더 나은 답변을 드릴 수 있을 것 같습니다.

답변3

버전 제어를 사용한다면(그렇지 않다면 반드시 사용해야 합니다!) 커밋 후크를 설정할 수 있습니다. 그렇게 할 수 있는 버전 제어 프로그램을 선택하면 됩니다. 대부분이 그렇게 합니다.

답변4

설치하다inotify 도구.

단일 파일을 관찰하고 파일이 변경될 때 명령을 실행하려면 다음을 수행하십시오.

inotifywait -m --format %w FILENAME | while read file; do
  COMMAND ${file}
done

어디

  • FILENAME: 시청하고 싶은 파일 이름
  • COMMAND: 파일 변경 시 실행하려는 명령
  • -m: 무기한 듣기 옵션

inotifywait를 통해 파일 이름보다 더 많은 정보를 출력할 수 있습니다 . 그 밖에 무엇을 할 수 있는지 --format확인해 보세요 (다소 짧은 읽기입니다). man inotifywait게다가,Wiki에서 통찰력을 얻으십시오.

누군가는 당신이 요청한 것을 정확히 수행하는 편의 스크립트로 이러한 명령을 래핑해야 할 것입니다.

convenience-script FILENAME COMMAND

관련 정보