ls >empty.txt를 실행하면 빈 폴더에 empty.txt가 표시되는 이유는 무엇입니까?

ls >empty.txt를 실행하면 빈 폴더에 empty.txt가 표시되는 이유는 무엇입니까?

빈 폴더에서 실행하면 왜 ls > empty.txt표시 되나요?비어있음.txt~에비어있음.txt?

시가 아니고 실제인데 왜 그런지 모르겠습니다.

나에게는 그들이 생각하는 방식 ls > empty.txt은 다음과 같다단계별로:

  1. ls실행되고 출력을 얻습니다(공백그 순간)
  2. >내가 가지고 있다는 뜻이야산출이전 명령의 (실제로 fd 2는)
  3. empty.txt에서 출력을 얻을(없음) 파일의 이름입니다 ls.

그렇다면 왜 달리나요?

마오콩.txt

알겠어요

empty.txt 

폴더가 비어 있으면 어떻게 되나요?

답변1

주문이 잘못되었습니다. 쉘은 모든 프로그램이 출력 방향을 재지정하는 방법을 알려주지 않습니다.

그래서 무슨 일이 일어나는가?

  1. 쉘은 이 명령을 처리하기 위해 새 쉘을 시작합니다.
  2. 원래 셸은 새 셸이 완료될 때까지 기다립니다.
  3. 파일 생성과 관련된 새로운 쉘 처리 > empty.txt.
  4. 새 쉘은 다음으로 대체됩니다.ls
  5. ls가 실행되고 빈 .txt 파일을 나열한 후 종료됩니다.
  6. 원래 쉘은 새 쉘(ls가 됨)이 완료되었음을 알리고 새 프롬프트가 인쇄됩니다.

관련 정보