网站搜索

在 Linux 中清空或删除大文件内容的 5 种方法


有时,在 Linux 终端中处理文件时,您可能希望清除文件的内容,而不必使用任何 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 命令清空文件

截断命令有助于将文件大小缩小或扩展至定义的大小。

您可以将其与指定文件大小的 -s 选项一起使用。要清空文件内容,请使用大小 0(零),如以下命令所示:

truncate -s 0 access.log

现在就这样,在本文中,我们介绍了使用简单的命令行实用程序和 shell 重定向机制清除或清空文件内容的多种方法。

这些可能不是唯一可用的实用方法,因此您还可以通过下面的反馈部分告诉我们本指南中未提及的任何其他方法。