`명령|과 의 차이점은 무엇입니까? 고양이 > 출력.txt` 및 `명령 > 출력.txt`

`명령|과 의 차이점은 무엇입니까? 고양이 > 출력.txt` 및 `명령 > 출력.txt`

파이프 라우팅을 사용한 후 이러한 출력을 파일로 보낼 수 없는 이유는 무엇입니까?

이 예를 통해 내가 의미하는 바를 더 잘 이해할 수 있습니다. 내 예에서는 명령 대신 라우팅 연산자(" >") 를 사용하여 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

빈 파일이 생성됩니다.

관련 정보