在 Linux 中清空或删除大文件内容的 5 种方法
有时,在 Linux 终端中处理文件时,您可能想清除文件的内容,而不必使用任何Linux 命令行编辑器打开它。如何实现呢?
在本文中,我们将借助一些有用的命令介绍清空文件内容的几种不同方法。
话虽如此,下面是从命令行清除文件内容的方法。
重要提示:为了本文的目的,我们access.log
在以下示例中使用了该文件。
1. 通过重定向到 Null 清空文件内容
清空文件内容的最简单方法是使用 shell 重定向null
(不存在的对象)到文件,如下所示:
# > access.log
2. 使用“true”命令重定向清空文件
这里我们将要使用的符号:
是shell内置命令,其本质等同于true
命令,并且可以用作no-op(无操作)。
另一种方法是将内置命令的输出重定向到文件,如下所示:
:true
# : > access.log OR # true > access.log
3. 使用 cat/cp/dd 实用程序和 /dev/null 清空文件
在 Linux 中,该null
设备主要用于丢弃进程不需要的输出流,或者作为输入流的合适空文件。这通常通过重定向机制来实现。
因此/dev/null
,设备文件是一个特殊的文件,它会注销(删除)发送给它的任何输入,或者它的输出与空文件的输出相同。
此外,你可以使用cat 命令/dev/null
将输出重定向到文件(文件)作为输入来清空文件的内容:
# cat /dev/null > access.log
接下来,我们将使用cp命令清空一个文件内容,如下所示。
# cp /dev/null access.log
在下面的dd 命令中,if
表示输入文件,of
表示输出文件。
# dd if=/dev/null of=access.log
4. 使用 echo 命令清空文件
这里,您可以使用带有空字符串的echo 命令并将其重定向到文件,如下所示:
# echo "" > access.log OR # echo > access.log
注意:您应该记住,空字符串与 null 不同。字符串即使为空也已经是一个对象,而 null 仅仅表示不存在对象。
因此,当您将上面的echo 命令重定向到文件,并使用cat 命令查看文件内容时,会打印一个空行(空字符串)。
要向文件发送空输出,请使用标志-n
告诉echo不要输出导致上一个命令中生成的空行的尾随换行符。
# echo -n "" > access.log
5.使用 truncate 命令清空文件
truncate命令有助于将文件大小缩小或扩大到定义的大小。
您可以使用指定文件大小的选项来使用它-s
。要清空文件内容,请使用大小 0(零),如下一个命令所示:
# truncate -s 0 access.log
就目前而言,在本文中,我们介绍了使用简单的命令行实用程序和 shell 重定向机制清除或清空文件内容的多种方法。
这些可能不是唯一可用的实用方法,因此您也可以通过下面的反馈部分告诉我们本指南中未提及的任何其他方法。