使用 Shell 清空文件
Linux 通过 shell 清空文件的方式可谓五花八门,可根据情况灵活使用。鉴于本人认知有限,我在此仅列出自己已知且常用的方法,如下表
方法 | 描述 |
---|---|
vi 等文本编辑器 | 没啥说的,打开文件,删除内容后保存即可 |
cat /dev/null > filename | 利用 /dev/null 这一特殊设备和重定向来清空文件 |
: > filename 或 > filename | 清空 filename,如果文件不存在,则创建文件 ":“与”>“之间有无空格均可 ”:"充当虚拟占位符,不产生任何输出 |
true > filename | 类似 :> filename |
truncate -s 0 filename | truncate 用于调整文件大小,-s 0,设置文件大小为0字节 |
rf -f filename && touch filename | 通过删除原文件,再创建同名文件的方式清空文件 |
①head -n0 file > file.bak 或 tail -n0 file > file.bak 或 touch file.bak ②mv file.bak file | 1. 创建一个空文件 2. 重命名文件 |
sed -i ‘1,$d’ filename | 使用 sed 清空文件 |
dd if=filename of=filename | 使用dd工具,通过将输入、输出文件指定为被清空文件的方式,来清空文件 |
dd if=/dev/null of=filename | 利用 dd 及 /dev/null 设备清空文件 |
dd if=/dev/zero of=filename bs=512 count=0 | 利用 /dev/zero 设备,将输出文件指定为被清空文件,count 指定为 0 来清空文件 |
/bin/cp -f /dev/null filename | 以防 cp 被作为 cp -i 的别名,使用其绝对路径 |
通过以上方法,被清空文件的大小均为 0。
通过 echo “” > filename 或 echo > filename 等也可清空文件,但文件大小为 1。
Linux 中清空文件的方法不止以上列出的几种,个人推荐使用 :> filename 这一方式。其一是简洁,其二是 : 是 shell 内建命令,不需要安装额外的工具。> filename 也可以,但在某些 shell 中可能无法正常运行。