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