【发布时间】:2016-04-24 12:08:07
【问题描述】:
出乎意料,这失败了(无输出;在 sh、zsh、bash 中尝试过):
echo "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played | sed 's#pl#st#g'
注意两次 grep 也失败了,说明使用了哪些命令完全不相关:
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played | grep played
grep 单独工作:
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | grep played
played
sed 单独工作:
# echo -e "foo\nplayed\nbar" > /tmp/t && tail -f /tmp/t | sed 's#pl#st#g'`
foo
stayed
bar
使用 cat 而不是 tail,它可以工作:
# echo -e "foo\nplayed\nbar" > /tmp/t && cat /tmp/t | grep played | sed 's#pl#st#g'
stayed
使用journalctl --follow,它就像使用tail 一样失败。
两次无法管道的原因是什么?
【问题讨论】: