2011-09-18 147 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提示。 –