$ : > hoge.txt
echo '' > hoge.txt
だと空文字に1B使うので気持ち悪い(というか空になっていない)。
と社内のWikiに書いたところコメントで大喜利が始まったので載せておきます。
/dev/nullをコピーする
$ cp /dev/null hoge.txt
なるほど、nullをコピーするのか。
rm
とtouch
をつなげる
$ rm hoge.txt && touch hoge.txt
これはもはや。。と思いましたが
Explicit is better than implicitな思想の人は好きそうですね
(パーミッション気にかけないと初期化されますが)
という意見も寄せられました。
確かに明示的なので見たら何やってるのかすぐわかります。
sed
のd
コマンドで中身を削除する
$ sed -i '' -e 'd' hoge.txt
# macだと上書き保存のときにバックアップの拡張子指定がいるので、空っぽにするとバックアップを作らない
truncateコマンド
gnuにまさしくそのためのソフトウェアであるtruncateがあります
https://linuxjm.osdn.jp/html/GNU_coreutils/man1/truncate.1.html
上記のようなコメントもいただきました。
コマンドとしては下記です。
$ truncate hoge.txt --size 0
echo
の-n
オプションで空行の末尾の改行を省略する
$ echo -n > hoge.txt
以上です。
こうやってたくさんコメントを貰えるのはとても参考になりますしありがたいです。