【shell】空ファイルを作る方法

空ファイルを作るときのコマンドといえば


$ touch file
$ ls -l
合計 0
-rw-r–r– 1 user project 0 Apr 14 05:26 file

をなんの疑いもなく使ってたのですが、
fileが存在した場合はこのコマンドだと更新時間が変わるだけで
中身はそのままなのです。

$ ls -l
合計 0
-rw-r–r– 1 user project 100 Apr 14 06:36 file
$
$ touch file
$ ls -l
合計 0
-rw-r–r– 1 user project 100 Apr 14 06:50 file

空ファイルを作ったつもりがぜんぜん空じゃない。
というわけでこっちのコマンドを使って空ファイルを作ることにしました。

$ cp /dev/null file

これは上書きもかねるのでfileが存在する場合も空ファイルとなります。


$ ls -l
合計 0
-rw-r–r– 1 user project 100 Apr 14 07:15 file
$
$ cp /dev/null file
$ ls -l
合計 0
-rw-r–r– 1 user project 0 Apr 14 07:30 file

今回の場合は、データありのファイルを空ファイルにする必要があったので
このコマンドを使ってるけど
フラグファイルみたいな空ファイルとしてしか運用されないようファイルの場合は
touchコマンドで大丈夫です。