延迟文件的 CreationTruncation

在运行任何命令之前,会创建/截断使用 w 命令写入的文件。

$ sed 'w created-file' < /dev/null && ls created-file && rm created-file
created-file

从标准:

每个 wfile 都应在处理开始之前创建。实现应支持脚本中至少十个 wfile 参数; 未指定实现支持的实际数字(大于或等于 10)。使用 wfile 参数将导致最初创建该文件(如果该文件不存在),或者应替换现有文件的内容。

BSD sed 提供了 -a 选项,可以延迟创建/截断文件,直到用 w 命令写入文件。

$ if sed -a 'w created-file' < /dev/null && [ ! -e created-file ]; then
>       echo The file was not created
> fi
The file was not created