2011-09-18 7 views
4

私はこのコマンドを数年前に見つけ、それ以来空ファイルに使用していました。Explain ":>"コマンド

これはどのように実際に機能しますか?

:> /server/logs/access_log

+0

このために ":"コマンドを使用するのは少し不必要なようです。単に ">ファイル名"だけではないのですか? – entitledX

+0

あなたが正しいと思われますが、 ':'演算子を使う必要はありません。それを試みたことはありません。 –

答えて

7

>ように使用

:>

リダイレクト演算子です。 :は組み込みのシェルコマンドで、trueコマンドと同等です。ほとんどの場合、スクリプトのプレースホルダとして使用されます。

:> filenameは、ファイルを空にします。

+0

WebMonster:ありがとう、 –

3

bashのdo-nothing演算子(WebMonsterが指摘しているようにtrueに相当)であるため、このコマンドは実際には次のファイルを作成し、サイズを0に切り捨てます。

通常、存在しない空のファイルを作成するには、touchを使用できますが、ファイルが存在し、データがある場合は空にしてください。これは、両方のことを同時に行う方法です。

0

私はあなたがunixoideオペレーティングシステムでシェルを使用していることを前提としています。通常、 ">"コマンドはコマンドの出力をファイルに送ります。

「:」とは分かりませんが、この部分はファイルに送信される「何もない」と思われます。

bashで
7

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 

を設定する方が良いでしょうし、あなたがそれを行うにしようとした場合、あなたはそれを

>| /server/logs/access_log 
を強制したい場合、それは

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

を吐くだろう

+0

'> |'とclobberのヒントのおかげで素晴らしいです。 –

関連する問題