'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말장난을 용서할 수 있다면 내 자신의 꼬리에 걸려 넘어지는 것 같습니다 . 여기서 무슨 일이 일어나고 있나요? then >대신 사용하면 >>예상되는 출력은 7026.

편집하다:

자세한 내용은 로컬 CentOS 7 VM(Mac에서 실행 중)에서 문제가 발생하고 있다는 점입니다. 별도의 VM에서 "동일한 작업"을 실행했는데 위와 동일한 출력이 나오지 않아서 두 명령 세트 모두 동일한 출력을 반환해서는 안 됩니다.

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

관련 정보