Linux 下清空或删除大文件内容的 5 种方法
在 Linux 终端下处理文件时，有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢？在这篇文章中，我们将介绍几种借助一些实用的命令来清空文件内容的方法。
文件 清空
113.102.132.58
直接rm不久好了， 搞这么麻烦
来自广东深圳的 Chrome 54.0|GNU/Linux 用户
2016-12-09T09:32:32.000
223.129.4.119
要清空文件内容，rm 应该就不行了。
来自四川成都四川大学的 Chrome 55.0|GNU/Linux 用户
2016-12-09T09:53:23.000
171.125.186.100
然后你还需要一个&nbsp;&nbsp;touch
linux [Chrome 54.0|Mac 10.11]
2016-12-09T19:45:48.000
171.125.186.100
然后，文件呢？其实，这里就像是研究茴香豆的茴有几种写法一样，给大家一些有益的提示，每个人都可以有自己喜欢的用法。
linux [Chrome 54.0|Mac 10.11]
2016-12-09T19:47:57.000
202.107.194.180
学习了.
来自浙江杭州的 Firefox 50.0|Fedora 用户
2016-12-10T08:38:02.000
113.104.33.213
一般都只用“&gt; access.log”这个，，比较简单，易记
来自广东河源的 Chrome 53.0|Windows 10 用户
2016-12-10T09:42:24.000
117.152.68.72
rm file &amp;&amp; touch file
来自117.152.68.72的 Chrome 54.0|Windows 10 用户
2016-12-10T11:55:24.000
119.131.198.140
没想到会有这么多个方法清空文件
Wf_talk [Firefox 49.0|GNU/Linux]
2016-12-11T20:55:29.000
59.175.182.34
说rm和touch的一看就是没有做过实际的运维。
来自湖北武汉的 Firefox 50.0|Windows 10 用户
2016-12-13T13:16:53.000
114.249.212.68
感觉原理好像都是 &gt; filename
来自北京的 Chrome 50.0|Windows 10 用户
2016-12-14T11:37:45.000
42.88.76.73
echo &quot;&quot; &gt; access.log比较好用
来自甘肃白银的 Sogou Explorer 2|Windows 7 用户
2016-12-14T12:51:05.000
180.102.103.20
unzip, strip, touch, grep, finger, mount, fsck, more, yes, fsck, fsck, fsck, top, free, umount, sleep
测试 [Firefox 52.0|Windows 10]
2016-12-16T20:47:51.000
210.13.83.237
非常赞的精品好文
wst021 [Chrome 55.0|Windows 8.1]
2016-12-23T10:19:07.000
124.204.37.114
考虑IO的&nbsp;&nbsp;蠢货
来自北京的 Chrome 72.0|Windows 10 用户
2019-03-07T12:03:01.000
124.204.37.114
考虑IO的&nbsp;&nbsp;蠢货
来自北京的 Chrome 72.0|Windows 10 用户
2019-03-07T12:03:06.000
124.204.37.114
考虑IO的&nbsp;&nbsp;蠢货
来自北京的 Chrome 72.0|Windows 10 用户
2019-03-07T12:03:11.000
124.204.37.114
考虑IO的&nbsp;&nbsp;蠢货
来自北京的 Chrome 72.0|Windows 10 用户
2019-03-07T12:03:12.000
49.7.58.115
？？？？
来自49.7.58.115的 Chrome 83.0|Windows 10 用户
2020-06-30T13:48:59.000
183.6.166.66
赶紧跑路了&nbsp;&nbsp;哈哈
来自广东广州的 Firefox 78.0|Windows 10 用户
2020-07-30T10:06:38.000
1.202.76.158
对于一个大文件，你可以试试两种的差别，不知道就不要乱说
来自北京的 Safari 13.1|Mac 10.15 用户
2020-11-06T18:27:22.000
203.205.141.89
不错的，学习了
来自香港的 Chrome 109.0|Mac 10.15 用户
2023-02-23T17:17:30.000
203.205.141.89
不错的，学习了
来自香港的 Chrome 109.0|Mac 10.15 用户
2023-02-23T17:17:33.000
101.198.192.11
刘先祺到此一游，写的真好
来自101.198.192.11的 Chrome 109.0|Windows 10 用户
2023-03-02T17:31:14.000
101.198.192.11
刘先祺到此一游，写的真好
来自101.198.192.11的 Chrome 109.0|Windows 10 用户
2023-03-02T17:31:17.000
在 Linux 终端下处理文件时，有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢？在这篇文章中，我们将介绍几种借助一些实用的命令来清空文件内容的方法。
在 Linux 终端下处理文件时，有时我们想直接清空文件的内容但又不必使用任何 [**Linux 命令行编辑器**](http://www.tecmint.com/linux-command-line-editors/) 去打开这些文件。那怎样才能达到这个目的呢？在这篇文章中，我们将介绍几种借助一些实用的命令来清空文件内容的方法。


![](/data/attachment/album/201612/08/195853w24pcumpmsb4ccm4.jpg)


**注意：**在我们进一步深入了解这些方法之前，请记住: 由于[**在 Linux 中一切皆文件**](http://www.tecmint.com/explanation-of-everything-is-a-file-and-types-of-files-in-linux/)，你需要时刻注意，确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。


前面已经说道，下面的这些方法都是从命令行中达到清空文件的目的。


**提示：**在下面的示例中，我们将使用名为 `access.log` 的文件来作为示例样本。


### 1. 通过重定向到 Null 来清空文件内容


清空或者让一个文件成为空白的最简单方式，是像下面那样，通过 shell 重定向 `null` （不存在的事物）到该文件：



```
# > access.log

```

![Empty Large File Using Null Redirect in Linux](/data/attachment/album/201612/08/195901fofaphifi0ofmhaf.png)


*在 Linux 下使用 Null 重定向来清空大文件*


### 2. 使用 ‘true’ 命令重定向来清空文件


下面我们将使用 `:` 符号，它是 shell 的一个内置命令，等同于 `true` 命令，它可被用来作为一个 no-op（即不进行任何操作）。


另一种清空文件的方法是将 `:` 或者 `true` 内置命令的输出重定向到文件中，具体如下：



```
# : > access.log
或 
# true > access.log

```

![Empty Large File Using Linux Commands](/data/attachment/album/201612/08/195901eil5fu4ufun7i5u7.png)


*使用 Linux 命令清空大文件*


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


在 Linux 中， `null` 设备基本上被用来丢弃某个进程不再需要的输出流，或者作为某个输入流的空白文件，这些通常可以利用重定向机制来达到。


所以 `/dev/null` 设备文件是一个特殊的文件，它将清空送到它这里来的所有输入，而它的输出则可被视为一个空文件。


另外，你可以通过使用 [**cat 命令**](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/) 显示 `/dev/null` 的内容然后重定向输出到某个文件，以此来达到清空该文件的目的。



```
# cat /dev/null > access.log

```

![Empty File Using cat Command](/data/attachment/album/201612/08/195901bzrhc00qgu3gfncr.png)


*使用 cat 命令来清空文件*


下面，我们将使用 [**cp 命令**](http://www.tecmint.com/progress-monitor-check-progress-of-linux-commands/) 复制 `/dev/null` 的内容到某个文件来达到清空该文件的目的，具体如下所示：



```
# cp /dev/null access.log

```

![Empty File Content Using cp Command](/data/attachment/album/201612/08/195902jgzbvxrzsh19041a.png)


*使用 cp 命令来清空文件*


而下面的命令中， `if` 代表输入文件，`of` 代表输出文件。



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

```

![Empty File Content Using dd Command](/data/attachment/album/201612/08/195902od39ydzwy9dky4j9.png)


*使用 dd 命令来清空文件内容*


### 4. 使用 echo 命令清空文件


在这里，你可以使用 [**echo 命令**](http://www.tecmint.com/echo-command-in-linux/) 将空字符串的内容重定向到文件中，具体如下：



```
# echo "" > access.log
或者
# echo > access.log

```

![Empty File Using echo Command](/data/attachment/album/201612/08/195902j6e6mhjjred5mmec.png)


*使用 echo 命令来清空文件*


**注意：**你应该记住空字符串并不等同于 `null` 。字符串表明它是一个具体的事物，只不过它的内容可能是空的，但 `null` 则意味着某个事物并不存在。


基于这个原因，当你将 [echo 命令](http://www.tecmint.com/echo-command-in-linux/) 的输出作为输入重定向到文件后，使用 [cat 命令](http://www.tecmint.com/13-basic-cat-command-examples-in-linux/) 来查看该文件的内容时，你将看到一个空白行（即一个空字符串）。


要将 null 做为输出输入到文件中，你应该使用 `-n` 选项，这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。



```
# echo -n "" > access.log

```

![Empty File Using Null Redirect](/data/attachment/album/201612/08/195903cel7zrk70w2o02qa.png)


*使用 Null 重定向来清空文件*


### 5. 使用 truncate 命令来清空文件内容


`truncate` 可被用来[**将一个文件缩小或者扩展到某个给定的大小**](http://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/)。


你可以利用它和 `-s` 参数来特别指定文件的大小。要清空文件的内容，则在下面的命令中将文件的大小设定为 0:



```
# truncate -s 0 access.log

```

![Truncate File Content in Linux](/data/attachment/album/201612/08/195903v1ht1ptgdkwpjkll.png)


*在 Linux 中截断文件内容*


我要介绍的就是这么多了。在本文中，我们介绍了几种通过使用一些简单的命令行工具和 shell 重定向机制来清除或清空文件内容的方法。


上面介绍的这些可能并不是达到清空文件内容这个目的的所有可行的实践方法，所以你也可以通过下面的评论栏告诉我们本文中尚未提及的其他方法。




---


via: <http://www.tecmint.com/empty-delete-file-content-linux/>


作者：[Aaron Kili](http://www.tecmint.com/author/aaronkili/) 译者：[FSSlc](https://github.com/FSSlc) 校对：[jasminepeng](https://github.com/jasminepeng)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

