:>filename.txt
Run Code Online (Sandbox Code Playgroud)
例如:
root@box$ dd if=/dev/zero of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00536175 s, 196 MB/s
root@box$ ll
total 1024
-rw-r--r-- 1 root root 1048576 Nov 15 14:40 file.txt
root@box$ :>file.txt
root@box$ ll
total 0
-rw-r--r-- 1 root root 0 Nov 15 14:40 file.txt
Run Code Online (Sandbox Code Playgroud)
这与rm
?不同吗?它是否比其他类似的将文件归零或删除的方法运行得更快或更慢?
jes*_*e_b 38
正如您所发现的,这只是清空文件内容(它截断了文件);这是从不同rm
的rm
实际上完全删除该文件。此外,如果文件不存在,:>file.txt
将实际创建该文件。
:
是一个“什么都不做的命令”,它将成功退出并且不产生任何输出,所以它只是一个清空文件的简短方法。在大多数 shell 中,您可以简单地执行>file.txt
以获得相同的结果。它也可以是略微快于其它方法,例如echo >file.txt
如echo
可能是外部命令。
此外,echo >file.txt
将在使文件没有任何内容的file.txt
位置放置一个空行:>file.txt
。