따라서 이것은 간단한 코드입니다.
(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
쉘은 다음 세 부분으로 명령줄을 얻습니다.
(echo ...
)>
file.txt
파트 #1의 (표준) 출력(stderr 출력 아님)은 파트 #2에 의해 파트 #3에 제공된 파일로 리디렉션됩니다. 첫 번째 부분의 괄호는 리디렉션 연산자의 모든 출력을 그룹화합니다 >
.