解释“:>”命令

时间:2011-09-18 22:00:09

标签: bash unix sh

几年前我找到了这个命令,从那以后用它来清空文件。

但这是如何运作的?

:>

一样使用

:> /server/logs/access_log

4 个答案:

答案 0 :(得分:7)

>是重定向运算符。 :是一个内置shell命令,相当于true命令,它主要用作脚本中的占位符。

:> filename会使您的文件为空。

答案 1 :(得分: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

答案 2 :(得分:3)

在bash中存在:“do-nothing”运算符(相当于WebMonster指出的true),此命令实际上创建并截断大小为0的以下文件。

请注意,通常要创建一个不存在的空文件,可以使用touch,但如果文件存在且有数据,则必须清空它。这是一种同时做两件事的方式。

答案 3 :(得分:0)

我假设你在unixoide操作系统上使用shell。通常是“>”命令将命令的输出发送到文件。

我不太确定“:”是什么,但似乎这部分是发送到你文件的“无”。