일반 텍스트 파일 a.txt
이 b.txt
있고c.txt
big.txt
나는 a, b, c를 연결한 결과라는 파일을 원합니다 .
a, b 또는 c를 편집하고 추가하면 big.txt가 자동으로 업데이트/추가됩니다.
Linux/Unix에서 이 작업을 어떻게 수행합니까?
답변1
질문을 두 부분으로 나눕니다.
big.txt
소스 파일이 변경되면 파일 생성- 소스 파일이 변경되면 자동으로 실행 1부
파트 #1은 make
소스 파일 편집을 기반으로 파생물을 만드는 기능을 하는 작업입니다. 아래 예에서는 "big.txt"가 "a.txt", "b.txt" 및 "c.txt"에 종속되어 있다고 말합니다. 을 실행하면 make
소스 파일의 타임스탬프가 의 타임스탬프와 비교되어 big.txt
최신인 경우 big.txt
업데이트됩니다.
$ ls
Makefile
$ cat Makefile
big.txt: a.txt b.txt c.txt
cat a.txt b.txt c.txt > big.txt
a.txt:
b.txt:
c.txt:
$ touch {a,b,c}.txt
$ make
cat a.txt b.txt c.txt > big.txt
$ make
make: `big.txt' is up to date.
$ echo 'hello world' > a.txt
$ make
cat a.txt b.txt c.txt > big.txt
이제 파일 형식을 편집 make
하고 big.txt를 생성한 후필요하다면.
파트 2는 다양한 방법으로 완료할 수 있습니다. 가장 간단한 방법은 make
백그라운드 루프에서 실행하는 것 입니다 while :; do make; sleep 60; done &
. 예를 들면 다음과 같습니다. 이것은 특별히 효율적이지 않으므로 iwaitnotify
파일의 변경 사항을 관찰한 다음 make를 실행하는 데 사용할 수 있습니다 . 바라보다이 답변은 예시입니다.
make
및에 대한 중요 참고 사항 Makefile
: 사용탭들여 쓰기.이것은 역사상 이상한 일이다 make
.