我们在处理 Linux 文件的时候,如果想直接清空文件的内容而不借助 Linux 命令行编辑器去打开这些文件。那怎样才能实现这个功能呢,本文就将介绍借助一些实用的命令来清空文件内容的方法。

值得注意的是:在 Linux 中,一切都是文件。所以必须始终确保你正在清空的文件不是重要的用户文件或系统文件。意外清空了系统文件或配置文件可能会导致严重的应用失败或系统错误。

本文使用access.log作为示例样本。

1、 通过 shell 重定向到 null

1
# > access.log

2、 使用 true 命令重定向

:是一个 shell 内建的命令,等同于 true命令,相当于 no-op (即没有进行操作)

1
2
3
# : > access.log
OR
# true > access.log

3、 使用 cat/cp/dd 工具及 /dev/null 设备来清空文件

在 Linux 中,null 设备常被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件。这些通常利用重定向机制来达到。
因此 /dev/null 设备是一个特殊的文件,它将清空所有送到这里的输入,而它的输出则可以看作是一个空文件。
你可以使用 cat 命令显示 /dev/null 设备的内容然后重定向到某个文件,以达到清空某个文件的目的。

1
# cat /dev/null > access.log

另外,可以使用 cp 命令把 /dev/null 设备的内容复制到文件

1
# cp /dev/null access.log

dd 命令主要用来转换和复制文件,下面的命令中,if 表示输入文件,of 表示输出文件。

1
# dd if=/dev/null of=access.log

4、 使用 echo 命令清空文件

1
2
3
# echo "" > access.log
OR
# echo > access.log

需要注意是,空字符串并等同于 null。一个字符串是一个具体的事物,只不过它的内容是空的。而 null 则意味着这个事物不存在。
基于这个原因,当你将 echo命令 的输出作为输入重定向到文件后,使用 cat命令 来查看该文件的时候,你将看到一个空白行(即一个空字符串)。
要将 null 作为输出输入到文件中,你应该使用 -n 选项,这个选项告诉 echo命令 不再像上面那个命令一样输出结尾的那个新行。

5、 使用 truncate 命令清空文件

truncate命令 可用来 将一个文件缩小或者扩大到指定的大小。
可以用 -s/-size 选项来指定文件的大小

1
# truncate -s 0 access.log

以上就是几种通过简单的命令行工具和重定向机制来达到清空文件的方法。