Linux는 파일 작성, 수정, 제거와 같은 모든 파일 시스템 이벤트를 모니터링하기위한 훌륭한 인터페이스를 제공합니다. 인터페이스는 inotify
시스템 호출 제품군이며, 이러한 호출을 활용하는 사용자 공간 유틸리티 inotify-tools
는 Ubuntu 의 패키지 (유니버스 리포지토리에서 사용 가능)에서 제공합니다. 아직 설치하지 않은 경우 다음을 통해 설치하십시오.
sudo apt-get install inotify-tools
inotify-tools
제공 inotifywait
하고 inotifywatch
바이너리를 사용하려면 첫 번째가 필요합니다.
따라서 파일이 수정 asciidoctor -q some_file
될 때 명령을 실행하려고합니다 .adoc
( some_file
이 파일 로 대체 됨) .adoc
파일이 디렉토리에 있다고 가정 /foo/bar
하면 시계를 설정할 수 있습니다.
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-q
inotifywait
자체 정보가없는 자동 모드 사용
-m
모니터 모드를 활성화합니다. 그렇지 않으면 첫 번째 이벤트 후에 종료됩니다
--event modify
, modify
파일 수정시 에만 관심 이 있습니다. 다른 가능한 값은 open
, close
등등
--format %w
파일 이름을 다른 명령의 입력으로 사용하므로 다른 정보가 아닌 수정 된 파일 이름 만 원합니다.
/foo/bar/*.adoc
디렉토리 .adoc
아래의 모든 파일 로 확장됩니다/foo/bar
위의 내용은 수정 될 때마다 파일 이름을 보여줍니다. 이제 파일 이름에서 명령을 실행합니다 (명령이 STDIN을 통해 인수를받는다고 가정).
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc | asciidoctor -q
디렉토리에서 재귀 감시를 설정할 수도 있습니다. 그런 다음 grep
원하는 파일 만 필터링하는 데 사용해야 합니다. -r
디렉토리 에서 시계를 재귀 적으로 설정하고 ( ) 파일 만 필터링 /foo/bar
하는 grep
데 사용 .adoc
합니다.
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
디렉토리를 볼 때 출력 형식 지정자가 %w
디렉토리 이름으로 해석되므로 %f
파일 이름을 가져와야합니다. 파일을 보면서 %f
빈 문자열로 확인합니다.
inotifywait
데몬 ( -d
) 모드 에서 실행할 수도 있고, 전체를 스크립팅하거나 백그라운드에서 실행할 수도 있고, 더 많은 다른 옵션을 사용할 수도 있습니다.
또한 asciidoctor
원하는 경우 원하는 다른 명령으로 바꿀 수 있습니다 .
man inotifywait
더 많은 아이디어를 얻으려면 확인하십시오 .