2011-09-18 146 views
4

幾年前我發現了這個命令,並且從那以後就使用它來清空文件。解釋「:>」命令

但是這真的有效嗎?

:>

使用像

:> /server/logs/access_log

+0

似乎有點不必要使用「:」命令來實現這一點。爲什麼不只是「>文件名」? – entitledX

+0

看起來像你是對的,不需要使用':'運算符。從來沒有嘗試過。 –

回答

7

>是重定向操作符。 :是內置shell命令,相當於true命令,它主要用作腳本中的佔位符。

:> filename會讓你的文件是空的。

+0

WebMonster:太好了,非常感謝 –

3

作爲: bash中的「無所事事」操作符(相當於WebMonster指出的true),此命令實際上創建並截斷大小爲0的以下文件。

請注意,通常要創建一個不存在的空文件,可以使用touch,但是如果文件存在並且有數據,則必須清空它。這是同時處理這兩件事的一種方式。

0

我假設你在unixoide操作系統上使用shell。通常,「>」命令將命令的輸出發送到文件。

我不太清楚是什麼「:」不,但似乎這部分是「無中生有」發送到您的文件。

7

在bash,help :爲您提供:

:: : 
    No effect; the command does nothing. A zero exit code is returned. 

它值得一提的是,因爲它是前面提到的,:通常需要的真正的地方,比如

while : 
do 
    date 
    sleep 60 
done 

但嚴格來說, :它不需要你的命令,你可以簡單地寫

> /server/logs/access_log 

爲了避免截斷重要的文件,不經意間,最好設置noclobber選項

set -o noclobber 

,如果你嘗試這樣做,它會吐出

-bash: /server/logs/access_log: cannot overwrite existing file 

,如果你想強迫它

>| /server/logs/access_log 
+0

很好,感謝'> |'和clobber提示。 –