Linuxでファイルサイズを0にする
今回は、最近いろいろとさわる機会の多かったLinuxの話です。
大きくなったログファイルなどを、一旦クリアしてしまいたい時ってありますよね。rmしてtouchとかでもできなくはないですが、パーミッションを設定し直したりしないといけなかったりするので、あまりスマートな方法ではなさそうです。こういう時、普通はどうするのかなと思って調べていたら、こんなページが見つかりました。
ファイルを空にする – 揮発性のメモ
http://d.hatena.ne.jp/iww/20071007/cat
$ :> foo.log
おお、こんなやり方があるんですね。知りませんでした。しかし、このスマイリーみたいな:>の意味が分かりません。とりあえず、試しに目と口の間に(笑)スペースを入れてみます。
$ : > foo.log
これも先ほどと同じ結果になりました。ということは:と>は別々のようです。>はリダイレクトですが、では一体:ってなんなのでしょうか? 記号ってほんと検索しにくいのですが(笑)がんばって調べてみると、こちらのページ曰く、何もせず,0を返す
ということだそうです。ということは、こんなのと一緒でしょうか?
$ echo > foo.log
と思ったら、ファイルサイズが1バイトになってしまいます。テキストエディタで開くと、改行が一つ入っていました。こういう時は
$ echo -n > foo.log
と-nオプションを付けるといいようです。このあたりで気づいたのですが、これでもいいようです。
$ > foo.log
シンプル! 勉強になりました。ちなみに普通はこうするらしい。
$ cp /dev/null foo.log
まあそうですよね。たぶんこれが一番安全です。
[追記]
こちらのサイトも参考になると思います。