파이프 라우팅을 사용한 후 이러한 출력을 파일로 보낼 수 없는 이유는 무엇입니까?
이 예를 통해 내가 의미하는 바를 더 잘 이해할 수 있습니다. 내 예에서는 명령 대신 라우팅 연산자(" >
") 를 사용하여 cat
출력을 라우팅할 수 없는 이유는 무엇입니까?
사용 cat
명령:
└─$ whoami | cat > out.txt
└─$ cat out.txt
testter
명령 없음 cat
:
└─$ whoami | > out1.txt
└─$ cat out1.txt
#no any content in file..
└─$ whoami | >> out2.txt
└─$ cat out2.txt
#no any content in file..
명령 대신 대체 도구를 사용할 수도 있습니다 cat
. cat
여기서 중요한 것은 도구가 아닙니다. 내가 묻고 싶은 것은 >
파이프에서 직접 데이터를 라우팅하기 위해 라우팅 연산자 " "를 사용할 수 없는 이유는 무엇입니까?
답변1
개념적으로 파이프는 왼쪽 명령의 출력을 오른쪽 명령의 입력에 연결하여 작동합니다.
따라서 다음 줄은 다음과 같습니다.
whoami | cat > out.txt
whoami
기본적으로 에 인쇄되지만 stdout
파이프가 있으므로 의 입력에 연결됩니다 cat
.
그렇다면 이것은 무엇을 의미합니까?
whoami | > out.txt
글쎄, 당신은 무엇이든 출력을 추가한다는 뜻입니다 whoami
. 그런 다음 콘텐츠의 출력을 파일로 리디렉션합니다.out.txt
이 >
연산자는 오른쪽에 있는 매개변수로 명명된 파일을 자르고, 필요한 경우 파일을 만든 다음 왼쪽에 있는 명령의 출력을 해당 파일로 리디렉션하는 것을 의미합니다. 알아채다
> out.txt
빈 파일이 생성됩니다.