
위 이미지는 ls의 결과 output이 result.txt 파일에 기록되는 리다이렉션하는 간단한 예제이다. 현재는 >가 1개밖에 없으므로 계속 새롭게 덮어쓰는 형태가 될 것이다.
캡쳐본처럼 ls -al 하고 난 result.txt의 파일 사이즈와 실제로 열어본 result.txt의 파일 사이즈와 내용이 일치하지 않을까?
아무것도 없는 디렉토리에서 위와 같은 과정을 여러 번 반복해보았으나, 똑같은 수행을 여러번 해도, ls -al 했을 때는 파일 사이즈가 168인데 cat result.txt를 하면 계속 파일 사이즈가 0이었다.
나와 언뜻 비슷해보이는 질문을 2년 전에 올렸던 사람이 있었는데, 해결되지 않은 듯 했다.
꼭 그렇게 중요하지도 않은 거 하나에 꽂히면 그거 알 때까지 찾고 해결을 보거나, 그렇지 못하면 그대로 그냥 하루를 종료하는 성격인지라 또 호기심이 도져버려서 찾아나서기 시작했다.
이것저것 뒤적거리다가 강의 출처인 이고잉 홈페이지의 영상 댓글에서 힌트를 발견하고 구글링을 제대로 다시 해보기 시작했다. 그래! '>' 의 순서대로 처리되는 게 아닐 수 있겠구나 (이제야 알았냐)
왜 redirction한 결과가 empty file로 기록되는 지에 대해 검색했고, stackoverflow 답변은 다음과 같았다.
참조로 많이 달렸던 GNU 공식 사이트의 Redirection 설명도 캡쳐본으로 아래와 같이 추가했다.

(틀린 부분은 곱게 지적해주시면 바로 수정 들어가겠습니다)

그래서 캡쳐본을 다시 보면,
ls -al 한 순간은 ls의 프로세스가 모두 다 돌고 redirection까지 끝난 상황이니까 result.txt의 파일 사이즈가 0이 아닌 것인데,
막상 result.txt 파일을 열어보면, ls 하는 그 순간에서는 파일이 막 생성되거나 리셋된 지점이었을테니 파일 사이즈가 0이었다.
재밌다 재밌어.. ㅎ