(echo 'text' ; cat file.txt ) > new file.txt 실제로 어떻게 작동하나요? [복사]

(echo 'text' ; cat file.txt ) > new file.txt 실제로 어떻게 작동하나요? [복사]

따라서 이것은 간단한 코드입니다.

(echo "Some text to prepend"; cat gero.txt) > file.txt

이 코드의 메커니즘을 실제로 이해할 수 없습니다. 따라서 기본적으로 gero.txt는 이미 존재하는 파일이며 "앞에 추가할 텍스트" + gero.txt를 사용하여 새 file.txt를 만듭니다. 내가 얻지 못한 것은 괄호 안의 부분입니다. 파이프와 같은 명백한 연산자 없이 echo 출력을 cat 으로 어떻게 리디렉션합니까 |?

답변1

일련의 명령을 실행할 때인터렉티브껍질, 같은

echo xxx; cat file; ls; echo yyy

그런 다음 모든 것이 지속적으로 실행되고 출력이 터미널로 전송됩니다.

그러나 대괄호 안에 이러한 명령을 실행하면 ()새 명령이 나타납니다.비대화형쉘이 생성되고 모든 것이 그 안에서 실행됩니다. 이제 이 숨겨진 하위 쉘의 전체 출력을 파일로 >file.txt리디렉션합니다 .()

답변2

쉘은 다음 세 부분으로 명령줄을 얻습니다.

  1. (echo ...)
  2. >
  3. file.txt

파트 #1의 (표준) 출력(stderr 출력 아님)은 파트 #2에 의해 파트 #3에 제공된 파일로 리디렉션됩니다. 첫 번째 부분의 괄호는 리디렉션 연산자의 모든 출력을 그룹화합니다 >.

관련 정보