在 Linux 中“清空文件”通常指保留文件本身,但把内容清空为 0 字节。下面按常见场景给你几种最常用、最安全的方法。
> 重定向(最常用)> filename
或
: > filename
说明:
truncatetruncate -s 0 filename
说明:
echoecho -n > filename
或
echo > filename
echo > file会写入一个换行符(不是严格清空),echo -n才是真 0 字节。
cat / ddcat /dev/null > filename
或
dd if=/dev/null of=filename
说明:
如果是正在运行的程序写入的日志文件,例如 app.log:
✅ 正确方式
> app.log
❌ 错误方式
rm app.log
rm只会删除目录项,进程仍持有 fd,磁盘空间不会释放,可能导致服务器磁盘爆满。
> file1.log file2.log file3.log
或脚本方式:
for f in *.log; do
> "$f"
done
cp /dev/null filename
或
truncate -s 0 filename
| 场景 | 建议 |
|---|---|
| 普通文件 | > |
| 日志文件 | > 或 truncate |
| 正在运行的程序 | 不要 rm |
| 想删除文件 | rm filename |
如果你愿意,可以告诉我:
我可以帮你给出最安全的一行命令。