![서브셸 및 입력/출력 리디렉션 문제](https://linux55.com/image/190732/%EC%84%9C%EB%B8%8C%EC%85%B8%20%EB%B0%8F%20%EC%9E%85%EB%A0%A5%2F%EC%B6%9C%EB%A0%A5%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%20%EB%AC%B8%EC%A0%9C.png)
쉘 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
이런 일이 발생합니까?