Bash

:>filename.txt 是做什麼的?

  • November 18, 2019
:>filename.txt

例如:

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

這與一個不同rm嗎?它是否比其他類似的歸零文件或刪除文件的方法更快或更慢?

正如您所發現的,這只會清空文件內容(它會截斷文件);這與rm實際rm完全刪除文件不同。此外,如果文件尚不存在,:>file.txt將實際創建該文件。

:是一個“什麼都不做的命令”,它將成功退出並且不產生任何輸出,因此它只是清空文件的一種簡短方法。在大多數 shell 中,你可以簡單地做得到>file.txt相同的結果。它也可能比其他方法(例如可能是外部命令)稍微快echo >file.txt一點echo

此外,將在使文件沒有任何內容的位置echo >file.txt放置一個空行。file.txt``:>file.txt

引用自:https://unix.stackexchange.com/questions/552436