それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bashでファイルを空にする。コマンド3種類

ファイルを空にしたい

フォルダやファイルの構造をそのままに、ファイルの中身を空っぽにしたい。

ファイルを消してtouch すれば良いんだろうけど、パーミッション設定しなおしたり面倒くさいよね。ファイルのinodeも変わってしまうので tail してたら tail し直しだ。ファイルをreadしてる常駐プロセスがあれば、そのでエラーになっちゃうし。

ファイルを空にする truncate

truncate -s0 path/to/file

これで、ファイルの中身を消せる。

truncate した場合の tail

tail してる場合は truncated と通知されるんですよ。

takuya@src$ tail -f src/index.html
aa
aa
tail: src/index.html: file truncated

ファイルを空にするリダイレクト

:>  /path/to/file

コマンドの : true と リダイレクト > を組合せて、ファイルをTruncateして空っぽにすることも出来る

echo で空文字 でもいい。

echo -n > /path/to/file

ddでマニアックに

もう一つの方法は dd でやるほうほう。これもマニアック。だけどちゃんとtruncateする。

要は ファイルをopen して先頭にカーソルを持ってきて何か書いてflush すれば良いわけです。

dd if=/dev/zero of=index.html bs=1 count=1

2018-02-26

追記修正