고양이 리디렉션 abc이 현재 디렉토리에 있고 텍스트가 있다고

라는 파일 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