파일이 변경되면 무언가를하십시오


10

LaTeX 문서를 작성할 때 자주 편집하기 위해 편집기에서 F6을 누르는 것을 알게되었습니다. 내가 말대꾸를 사용하는 경우 또는, 나는 종종 입력 make내 변환 .scss에를 .css.

이제 make주어진 파일이 변경 될 때마다 시스템이 더티 작업 및 실행 등을 수행하도록하고 싶습니다 .

지금까지 터미널 창을 열어 둔 상태에서 화살표를 위로 누르고 돌아 왔습니다. 또는을 사용 watch make했지만 이상한 해결책처럼 보입니다.

주어진 파일이 변경 될 때 Linux에서 무언가를 수행하는 좋은 방법이 있습니까?

답변:


4

당신은 inotify-tools의inotifywait 일부를 찾고 있습니다 . 프로젝트 사이트에서 사용하는 방법에 대한 몇 가지 예가 있지만 간단한 접근 방식은

while true; do inotifywait code.cpp -e modify; make; done

핵심 부분은

inotifywait code.cpp -e modify

해당 명령 code.cpp은 수정 될 때까지 기다렸다가 종료합니다. 무한 루프에 넣고 make모든 수정 후에 지속적으로 재 구축합니다.

수정 대기 이외에도 작성, 삭제, 액세스, 열기, 닫기 등을 기다릴 수 있습니다. 나는 높게보고 추천 프로젝트 예제inotifywait를 man 페이지 가 사용할 수있는 방법에 대한 몇 가지 다른 아이디어.


바로 내가 찾는 것입니다!
Martin Ueding

1

시간 이벤트 대신 파일 시스템 이벤트에 응답하는 cron과 유사한 패키지 인 incron을 살펴보십시오 . 패키지는 잘 알려진 / 쌍의 cron 과 비슷한 데몬 ( incrond)과 테이블 조작기 ( incrontab) 로 구성됩니다 .crondcrontab

incron을 사용하면 make특정 파일 및 / 또는 디렉토리가 수정 될 때마다 쉽게 실행되도록 정렬 할 수 있습니다 .


한편으로는 약간 과잉이지만 다른 한편으로는 올바른 도구입니다. 체크 아웃해야 할 수도 있습니다. 어쩌면 각 프로그래밍 세션마다 활성화하고 비활성화 할 수 있습니다.
Martin Ueding

0

보다는 watch make, 방법에 대한 watch ls? 그런 다음 make타임 스탬프가 변경 될 때


음, make는 이미 타임 스탬프를 확인하므로 시간을 확인한 다음 다시 시간을 확인하도록하는 것은 무의미합니다.
Martin Ueding

맞지만 make를 실행하면 ls를 실행하는 것보다 비쌉니다.
Scott C Wilson

1
그리고 내 makefile이 그 단일에 대한 두 줄이면 .tex? ls파서를 작성하는 것이 가치가 있다고 생각하십니까 ?
Martin Ueding
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.