# ファイルを空にする 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」オプションを付けて「最後の改行を出力しない」ようにすれば解決ですの♪