我有几个关于 shell i/o 行为的问题
echo apple | echo banana
这里的输出只是
banana
但在这个命令中:
echo apple | { echo banana; tail; }
输出是
banana
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
这样