我的脚本使用一个 tmp 文件来写入和删除数据。我使用重定向来写入和sed
删除。
在某个时刻,我想检查文件是否存在并且为空,但是我的代码失败(文件存在并且没有数据):
[[ -s /tmp/tmp_file ]] && echo "not empty" || echo "empty"
not empty
当我检查文件大小时,它显示 1 个字节,尽管文件中没有数据。
如果我用 gedit 打开文件并保存文件,那么它显示 0 字节大小。
为什么会这样?
如何确保在删除内容时不会留下多余的字节?
添加 和 的输出ls -ld
,od
当文件为“空”(一个字节)时:
ls -ld tmp_file
-rwxr-xr-x 1 root root 1 dic 18 15:43 tmp_file
od tmp_file
0000000 000012
0000001
显示一字节大小的图像:
在 gedit 中打开的文件的图像:
1 字节文件,仅包含一个 \n。
使用
>/tmp/foo
归零。我将猜测您正在使用
echo
写入文件,该文件附加了一个换行符,当您使用 删除时sed
,您在删除时与换行符不匹配。这里有几个选项:
1:使用
printf
or (echo -n
如果支持)来写而不带尾随换行符。2:将尾随换行符与 sed 匹配以删除它/它们。
3:史蒂夫在适当的时候清空文件的方法。