カテゴリー
Linux

Linux でファイルを空にするコマンド、cp

# ファイルを空にする(基本)
cp /dev/null /tmp/a.txt

# 複数ファイルを空にする(応用)
¥cp -f /dev/null /tmp/a.txt
¥cp -f /dev/null /tmp/b.txt
¥cp -f /dev/null /tmp/c.txt

複数ファイルを空にする方ですけれども、これは1回のコマンドで空にする方法ではございません。

空にするファイルのリストが手元にありましたらそれらの先頭に「¥cp -f /dev/null」をつけるだけでコマンドがお手軽に完成する、そういう意味ですの。

解説

/dev/null

/dev/null は、ここに書き込まれたデータを全て消しますし、読みだしてもデータを返しません(EOF を返す)。ブラックホールですとか、溶鉱炉ですとか、ゲーム Minecraft の溶岩ですとか、わたくしイメージしていますの。

cp コマンドオプションなど

cp はコピーを行うコマンドです。オプションの -f をつけることにより、確認なしでコピーすることができます。

とあるファイルの内容を消すために /dev/null をかぶせますので、デフォルトの設定では上書きしてもよいか聞かれるのです。これを、打ち消すコマンドですの。

ただし、-f オプションをつけても、なぜか確認を要求されてしまうことがございます。なぜでしょうか?

これは、cp コマンドにエイリアスが設定されており、その内容が上書き確認を強制するものであるからですわ。

[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .*'
alias ll='ls -l'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#

そこでこのエイリアスを一時的に打ち消すために「¥」をつけるのです。

ファイルを空にするためのコマンド

cp コマンドを使用しましたが、cat でも実現可能とのことですの。/dev/null をファイルにリダイレクトできればよいわけですので、cp でも cat でも問題ありませんわね。

とってもおもしろいですの。

おわりに

他にもいろいろ方法があるようですの。今回、手堅そうだと直感で感じられました、コピーコマンドを使用した方法をノートさせていただきました。

以上です。

「Linux でファイルを空にするコマンド、cp」への4件の返信