![파일에 "cat"이 추가되면 자신을 덮어쓰는 것처럼 보이는 이유는 무엇입니까?](https://linux55.com/image/197489/%ED%8C%8C%EC%9D%BC%EC%97%90%20%22cat%22%EC%9D%B4%20%EC%B6%94%EA%B0%80%EB%90%98%EB%A9%B4%20%EC%9E%90%EC%8B%A0%EC%9D%84%20%EB%8D%AE%EC%96%B4%EC%93%B0%EB%8A%94%20%EA%B2%83%EC%B2%98%EB%9F%BC%20%EB%B3%B4%EC%9D%B4%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 두 가지 명령 그룹을 고려하십시오.
$ cat *.d | wc -l
그리고
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
이 두 개가 동일한 값을 출력하기를 원합니다. 그러나 내가 소유한 특정 디렉터리에서 실행하면 다음과 같은 내용이 표시됩니다.
$ cat *.d | wc -l
7026
비교해 보면:
$ rm -f tmp
$ cat *.d >> tmp
$ cat tmp | wc -l
295
말장난을 용서해 주신다면 내 것은 cat
꼬리에 걸려 넘어지는 것 같았습니다. 여기서 무슨 일이 일어나고 있는 걸까요? >
대신 사용하면 >>
예상되는 결과를 얻습니다 7026
.
편집하다:
자세한 내용은 로컬 CentOS 7 VM(Mac에서 실행)에서 문제가 발생하는지 확인하세요. 별도의 가상 머신에서 "동일한 작업"을 실행했기 때문에 위와 동일한 출력을 받아서는 안 됩니다. 두 명령 세트 모두 동일한 출력을 반환합니다.
두 경우 모두 버전은 cat
8.22이고 버전은 bash
4.2.46(2)입니다.