사용 사례

사용 사례

하위 디렉터리의 파일(선택한 제외 제외)이 변경되면 특정 명령을 다시 실행하는 방법을 찾고 있습니다.

사용 사례

저는 디렉토리에서 별도의 프로젝트를 진행하고 있습니다. 예를 들어, make내 컴퓨터의 여유 시간을 사용하여 이 프로젝트를 반복적으로 컴파일하고 싶습니다. 한 가지 옵션 은 make.watch (1)make

make대신, 모든 파일을 감시하고 프로젝트가 있는 디렉터리가 변경된 후에만 실행(또는 다른 도구)하는 프로세스가 있어야 합니다 .

기존 솔루션

다른 사람이 이렇게 물었습니다.Bash 스크립트를 파일에 연결할 수 있나요?는 있지만 inotifywait (1)명령을 반복하기에는 좋은 인터페이스가 없는 것 같습니다. 또한 entr (1)작동하는 것 같은 방법이 있지만 다시 확인하십시오.프로젝트 웹사이트노출된

entr[i] 자체 파일 검색 구문을 구현하지 않고 대신 표준 Unix 도구에 의존하기 로 초기에 결정되었습니다 .

나는 매우 게으르다. 반복되는 호출에 대한 루프를 작성하고 싶지 않습니다 make. 글을 쓸 수 있는 고급 마법 도구가 있나요?

magic make

효과는 make매번 다시 실행되는 것 입니다.아무것현재 디렉터리를 변경하시겠습니까?

알아채다: 이 마법의 도구가 다음을 사용할 때 불가피한 경쟁 조건을 인식할 수 있다면 이상적일 것입니다 inotify. 호출이 이루어진 후 시계가 설정되기 전에 발생하는 변경 사항입니다. 이것이 가능한지 잘 모르겠습니다 entr. 이 기능을 사용하려면 영향을 받는 모든 파일의 타임스탬프에 대한 일종의 스냅샷을 추적해야 하는 것 같습니다.

뻔뻔한 자기 홍보: 이것을 구현하는 내 자신의 네 줄의 코드는 다음과 같습니다.rpt그리고 완벽함과는 거리가 멀기 때문에 여기서 작업을 복제하고 있는 것은 아닌지 궁금합니다.

답변1

아마도 ls <dir> | entr make <file>효과가 있을 것입니다. inotifywait만이 파일 생성을 시작합니다.

파일 이름을 전달해야 하는 경우 이 답변의 주석에 있는 정보를 사용하세요.https://unix.stackexchange.com/a/81704/346155

관련 정보