빈 폴더에서 실행하면 왜 ls > empty.txt
표시 되나요?비어있음.txt~에비어있음.txt?
시가 아니고 실제인데 왜 그런지 모르겠습니다.
나에게는 그들이 생각하는 방식 ls > empty.txt
은 다음과 같다단계별로:
ls
실행되고 출력을 얻습니다(공백그 순간)>
내가 가지고 있다는 뜻이야산출이전 명령의 (실제로fd 2
는)empty.txt
에서 출력을 얻을(없음) 파일의 이름입니다ls
.
그렇다면 왜 달리나요?
마오콩.txt
알겠어요
empty.txt
폴더가 비어 있으면 어떻게 되나요?
답변1
주문이 잘못되었습니다. 쉘은 모든 프로그램이 출력 방향을 재지정하는 방법을 알려주지 않습니다.
그래서 무슨 일이 일어나는가?
- 쉘은 이 명령을 처리하기 위해 새 쉘을 시작합니다.
- 원래 셸은 새 셸이 완료될 때까지 기다립니다.
- 파일 생성과 관련된 새로운 쉘 처리
> empty.txt
. - 새 쉘은 다음으로 대체됩니다.
ls
- ls가 실행되고 빈 .txt 파일을 나열한 후 종료됩니다.
- 원래 쉘은 새 쉘(ls가 됨)이 완료되었음을 알리고 새 프롬프트가 인쇄됩니다.