파일로 파이프되는 프로세스가 있다고 가정해 보겠습니다.
yes > foo
이제 파일을 지우거나 비우고 싶지만 foo
프로세스가 파일에 쓰기를 원합니다. 즉, 파일을 지운 후에 파일을 다시 채우기 시작합니다.
가능합니까?
답변1
yes >> foo
파일을 지우려면 yes > foo
및 단독으로 사용:>foo
yes >> foo
이유read
foo
로 열다O_APPEND
. 이로 인해 파일 오프셋은 각 쓰기 전에 파일 끝에 위치하게 됩니다.
따라서 yes
파일에 쓸 foo
때마다 파일 포인터가 에 있게 됩니다 foo
. 또한 : > foo
파일을 0바이트로 자릅니다. 이제 0바이트의 "끝"에서 파일 포인터 위치가 변경되어 yes
다음 쓰기가 0바이트의 시작 부분에서 다시 시작됩니다.foo
O_APPEND
foo
답변2
이렇게 하고 yes > foo
또 하면 된다.하다첫 번째 실행 후 foo 파일의 모든 항목을 삭제합니다...
다음 방법 중 하나를 사용할 수 있습니다.
rm foo
yes > foo
> foo
yes > foo
echo "" > foo
yes > foo