라는 파일 abc
이 현재 디렉토리에 있고 텍스트가 있다고 가정하십시오. 명령을 실행할 때 :
cat abc > abc
파일 내용이 왜 abc
사라 집니까?
명령이 왜 텍스트를 삭제하고 파일이 빈 파일이됩니까?
답변
순서가 다르기 때문에
할 때 :
cat abc > abc
>
출력 리디렉션 연산자입니다. 셸에서이 O_TRUNC
플래그를 볼 때 open(2)
ie 플래그를 사용하여 잘림 모드에서 파일을 열면 파일에 open("abc", O_TRUNC)
있던 모든 것이 사라집니다. 이 리디렉션은 cat
명령이 실행 되기 전에 셸에서 먼저 수행됩니다.
따라서 명령이 cat abc
실행될 때 파일 abc
이 이미 잘렸으므로 cat
파일이 비어 있습니다.
답변
@ heemayl ‘s answer에 추가하여 , 코드가 발생하는 순서에 대해 더 명확하게하려면 명령 시작시 간단히 모든 방향 재 지정을 넣을 수 있습니다.
> abc cat abc