![Bash - 파일로 리디렉션(버그)하시겠습니까? [복사]](https://linux55.com/image/184578/Bash%20-%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98(%EB%B2%84%EA%B7%B8)%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
이 예를 보면 혼란스럽습니다.
[ziga@brane ~]$ touch test.txt
[ziga@brane ~]$ echo "TEST" > test.txt
[ziga@brane ~]$ cat test.txt
TEST
[ziga@brane ~]$ cat test.txt | grep "TEST"
TEST
[ziga@brane ~]$ cat test.txt | grep "TEST" > test.txt
[ziga@brane ~]$ cat test.txt
[ziga@brane ~]$
cat test.txt | grep "TEST" > test.txt
파일 내용을 삭제 해야 하는 이유는 무엇입니까 test.txt
? >
다시 작성하고 추가하는 것 같아요 >>
! 내가 무엇을 놓치고 있나요?
답변1
리디렉션이 먼저 발생하기 때문에 >test.txt
파일을 먼저 자르고 다음에는 cat test.txt
아무것도 읽히지 않고 전달되지 않으므로 | grep "TEST"
일치하는 항목이 없으며 마지막으로 열린 파일에 아무것도 기록되지 않습니다.test.txt