![(echo 'text' ; cat file.txt ) > new file.txt 실제로 어떻게 작동하나요? [복사]](https://linux55.com/image/135486/(echo%20'text'%20%3B%20cat%20file.txt%20)%20%26gt%3B%20new%20file.txt%20%EC%8B%A4%EC%A0%9C%EB%A1%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
따라서 이것은 간단한 코드입니다.
(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에 제공된 파일로 리디렉션됩니다. 첫 번째 부분의 괄호는 리디렉션 연산자의 모든 출력을 그룹화합니다 >
.