如果磁盘空间不足,如何从 shell 脚本重写文件而不会有截断文件的危险?
这个方便的 perl one liner 在名为 test.txt 的文件中将所有出现的“foo”替换为“bar”:
perl -pi -e 's/foo/bar/g' test.txt
这非常有用,但是...
如果 test.txt 所在的文件系统磁盘空间不足,test.txt 将被截断为一个零字节文件。
有没有一种简单的、无竞争条件的方法来避免这种截断的发生?
我希望 test.txt 文件保持不变,如果文件系统空间不足,命令返回错误。
理想情况下,该解决方案应该可以通过 shell 脚本轻松使用,而无需安装额外的软件(除了“标准”UNIX 工具,如 sed 和 perl)。
谢谢!