既存のファイルを空にする

既存のファイルを空(0バイト)にする方法。ファイルが存在していないのであれば、$ touch filename とやればいいだけ。
既存のファイルを空にするには、次のいずれかで実現可能。

 $ > filename
 $ :> filename
 $ echo -n > filename
 $ cat /dev/null > filename
 $ cat > filename

2例目で “:>” というのが利用されている。「:」をつけることで、リダイレクトのみだとNGなシェルでも動くようになるというコメントを見つけたけど、実際にどんなシェルでNGなのか、とか、そもそも「:」が何なのかは不明。

via : Quick Tip: Delete the Contents of a File without Removing and Recreating It

なお、あるファイルが0 byte(空)かどうかの判定は test -s でOK.(-s FILE : FILE exists and has a size greater than zero)

$ touch empty
$ echo hello > not_empty
$ test -s empty
$ echo $?
1
$ test -s not_empty
$ echo $?
0
Advertisements
Tagged with: , , , ,
Posted in linux, tip
One comment on “既存のファイルを空にする
  1. dummy says:

    「そもそも「:」が何なのかは不明。」
    自分の環境(CentOS)では、「Invalid null command」と出たので、リダイレクト前に何かコマンドがなければいけないということでしょう。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: