微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 使用相同的输入文件作为管道命令的输出是否可以?

考虑类似的事情:

cat file | command > file

这是好习惯吗?这可能会在我们读取输入文件的同时覆盖输入文件,还是始终先在内存中读取然后通过管道传输到第二个命令?

显然,我可以使用临时文件作为中间步骤,但我只是想知道..

t=$(mktemp)
cat file | command > ${t} && mv ${t} file

解决方法:

不,不行.管道中的所有命令同时执行,并且shell在执行命令之前准备重定向.因此,在cat读取之前,该命令很可能会覆盖该文件.

你需要来自moreutils的sponge(1).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐