カテゴリー
Linux

Linux でファイルを空(サイズを 0)にする方法2

# ファイルを空にする
cp /dev/null /tmp/a.txt
> /tmp/a.txt
:> /tmp/a.txt
: > /tmp/a.txt
echo -n > /tmp/a.txt

cp /dev/null

「cp」コマンドは以前投稿しました。「無」ファイルをコピーするイメージです。

>、:>、: >

「>」は左側の内容を右側のファイルに書き込みます。最初の「何もなし」は、それこそ「無」をファイルに書き込んでいると考えればよいのだと思います。

次の2つですけれども、「:」という何もしないコマンドを使用しています。

「:」は何もしない。「:」を実行した後に0を戻り値として返す。

この説明だけを読みますと、ともすれば「0」がファイルに書き込まれてしまうのでは?と思いましたけれども、「何もしない」部分が書き込まれるようです。実際に試してみました。

何もしないということが「>」に渡される = 結果のないデータ(つまり「無」)がファイルに書き込まれる、ということではないでしょうか?妄想ですので正しいかどうかはわかりません♪

また、「:>」でも「: >」でも同じ結果となりました。これは、「:>」というコマンドがあるわけではなく、「:」と「>」というコマンドの組み合わせであるということがわかります。

ファイルを空にする、という動作があまりにも特殊ですので、最初は「:>」というコマンドがあるのかと思っておりました。

echo -n

標準出力になにもないものを出力し、それを「>」でファイルに上書きすることで空にしております。

このとき、改行が書き込まれてしまうため、ファイルが空にならない問題が発生しますけれども、echo に「-n」オプションを付けて「最後の改行を出力しない」ようにすれば解決ですの♪

おわりに

以前コチラの投稿で、コピーコマンドを使用したファイルを、削除、ではなく空にする方法をご案内いたしました。

トランケート、トランケイト、truncate と言えばよいのかしら?ともかく、次でございます。

大変うれしいことに、次のようなコメントをいただきました。

もっと簡単に
:> file.txt
で簡単に空になりますよ。

ありがとう存じます♪これをきっかけに今回さらに調べ、試すことができました。重ねて感謝いたします。

最後に、参考にさせていただいたページを紹介して締めくくりたいと思います。ありがとう存じます♪

以上です。

コメントを残す