Linux清空文件内容的5种方法
系列 - Delete File and Directory
目录
在本文的示例中, 使用名为
access.log
的文件来作为示例样本。
1 重定向到Null
清空或者让一个文件成为空白的最简单方式, 是通过shell重定向null
(不存在的事物) 到该文件:
|
|
2 使用true命令
:
符号, 它是shell的一个内置命令, 等同于true
命令, 它可被用来作为一个no-op (即不进行任何操作) 。
下面将:
或者true
内置命令的输出重定向到文件中:
|
|
或
|
|
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 命令
使用echo
命令将空字符串的内容重定向到文件中:
|
|
或
|
|
注意
空字符串并不等同于null
:
- 字符串表明它是一个具体的事物, 只不过它的内容可能是空的。
- 但
null
则意味着某个事物并不存在。
基于这个原因, 将echo
命令的输出作为输入重定向到文件后, 使用cat
命令来查看该文件的内容时, 可以看到一个空白行 (即一个空字符串) 。
要将null
做为输出输入到文件中, 可以使用-n
选项, 这个选项将告诉echo
不再像上面的那个命令那样输出结尾的那个新行:
|
|
5 使用 truncate 命令
truncate
可以将一个文件缩小或者扩展到某个给定的大小。可以利用它和-s
参数来特别指定文件的大小。要清空文件的内容, 则在下面的命令中将文件的大小设定为0:
|
|