파일에 "cat"이 추가되면 자신을 덮어쓰는 것처럼 보이는 이유는 무엇입니까?

파일에 "cat"이 추가되면 자신을 덮어쓰는 것처럼 보이는 이유는 무엇입니까?

다음 두 가지 명령 그룹을 고려하십시오.

$ 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에서 실행)에서 문제가 발생하는지 확인하세요. 별도의 가상 머신에서 "동일한 작업"을 실행했기 때문에 위와 동일한 출력을 받아서는 안 됩니다. 두 명령 세트 모두 동일한 출력을 반환합니다.

두 경우 모두 버전은 cat8.22이고 버전은 bash4.2.46(2)입니다.

관련 정보