서브셸 및 입력/출력 리디렉션 문제

서브셸 및 입력/출력 리디렉션 문제

쉘 I/O 동작에 대해 몇 가지 질문이 있습니다.

echo apple | echo banana

여기서의 출력은 다음과 같습니다.

banana

하지만 이 명령에서는:

echo apple | { echo banana; tail; }

출력은 다음과 같습니다

banana
apple

바나나가 사과보다 먼저 나온 이유는 무엇입니까? Apple이 첫 번째 명령처럼 보이지 않는 이유는 무엇입니까?

echo apple | { echo banana; rev; }

위 명령의 출력은 다음과 같습니다.

banana
elppa

사과는 왜 반전되고 바나나는 반전되지 않습니까? echo banana; rev;동시에 실행되기 때문일까요 ?

echo apple >&2 | { echo banana; rev; }

위 명령의 출력:

banana
apple

이는 이전 명령과 비교하여 이해가 됩니다. 왜냐하면 우리는 Apple에게 오류 출력으로 이동하고 rev표준 출력만 허용하도록 지시하고 있기 때문입니다.

echo apple >&2 | { echo banana; rev; } | tac

산출:

apple
banana

왜 줄 순서를 바꾸려는지 잘 모르겠습니다 tac. 오류 출력도 고려됩니까?

{ echo apple >&2; echo banana; } | rev | tac

산출:

apple
ananab

여기서 사과는 오류 출력이기 때문에 이해하지 못하는 것 같지만 rev바나나는 이해하지만 왜 tac이런 일이 발생합니까?

관련 정보