상상하다:
$ cat t0.txt
xxx
$ grep xxx t0.txt > t0.txt
grep: t0.txt: input file is also the output
# exit status 2
$ cat t0.txt
<nothing>
질문: 입력 파일도 출력이고 존재 상태가 2
(오류 발생)인 경우 입력 파일을 지워야 하는 이유는 무엇입니까?
답변1
쉘 리디렉션이 먼저 발생하므로 먼저 쉘이 출력 파일을 비운 다음 입력과 출력이 동일하다고 불평합니다. grep은 입력 및 출력 파일 번호를 확인하기 때문에 둘이 동일하다는 것을 어떻게 알 수 t0.txt
있습니까 ? (참조해 주세요grep
grep
inode
소스코드는 여기에/ 1377~1403행).
안타깝게도 t0.txt
결과적으로 콘텐츠가 손실됩니다.