Linux ターミナルでファイルを処理しているとき、必ずしも Linux コマンドライン エディターを使用してファイルを開かずにファイルの内容を消去したい場合があります。 これはどのように実現できるのでしょうか。 この記事では、いくつかの便利なコマンドの助けを借りて、ファイルの内容を空にするいくつかの異なる方法について説明します。 Linux ではすべてがファイルであるため、空にするファイルが重要なユーザーファイルやシステムファイルでないことを常に確認する必要があることに注意してください。 重要なシステムファイルや設定ファイルの内容を消去すると、致命的なアプリケーション/システムエラーや障害につながる可能性があります。
それを踏まえて、以下にコマンドラインからファイルの内容を消去する手段を示します。 この記事の目的のために、以下の例では、ファイル access.log
を使用しています。
Null にリダイレクトしてファイルの内容を空にする
シェル リダイレクト null
(non-existent object) を使用してファイルの内容を空にする最も簡単な方法は、次のようにファイルに移動することです。
# > access.log
Empty File Using ‘true’ Command Redirection
ここで記号 :
は true
コマンドと本質的には等しいシェル組み込みコマンドでノーオープン(操作なし)として使用できるものを使用することになります。
もう一つの方法は、:
またはtrue
内蔵コマンドの出力を、次のようにファイルにリダイレクトすることです。
# : > access.logOR # true > access.log
Empty File Using cat/cp/dd utilities with /dev/null
Linuxにおいて、null
デバイスは、プロセスの不要な出力ストリームを廃棄したり、入力ストリームに適した空のファイルとして利用されるのが基本である。
そして /dev/null
デバイス・ファイルは、送られた入力をすべて書き捨てる (削除する) 特別なファイルであり、その出力は空のファイルのものと同じである。
さらに、/dev/null
の出力を入力としてcatコマンドでリダイレクトすれば、ファイルの内容を空にすることができます:
# cat /dev/null > access.log
次に、cpコマンドを使ってファイルの内容を空にしてみましょう。
# cp /dev/null access.log
以下のコマンドにおいて、if
は入力ファイル、of
は出力ファイルのことを指します。
# dd if=/dev/null of=access.log
Empty File Using echo Command
ここで、echoコマンドで空文字列を指定してファイルに転送するには、以下のようにすればよいでしょう。
# echo "" > access.logOR# echo > access.log
Note: 空文字列はヌルと同じではないことを覚えておく必要があります。
このため、上記の echo コマンドの出力をファイルにリダイレクトし、cat コマンドでファイルの内容を表示すると、空行(空文字列)が表示される。
ファイルに空出力を送信するには、フラグ -n
を使用して、前のコマンドで生成した空行につながる最後の改行が出力されないよう echo に指示します。
# echo -n "" > access.log
Empty File Using truncate Command
truncate コマンドはファイルのサイズを縮小したり拡張して指定するために使用できるコマンドです。 ファイルの内容を空にするには、次のコマンドのように 0 (ゼロ) のサイズを使用します。
# truncate -s 0 access.log
以上、この記事では、簡単なコマンドライン ユーティリティとシェル リダイレクト機構を用いてファイルの内容をクリアまたは空にする複数の方法について取り上げました。
These not probably only available practical ways of doing this, so you can also tell us about any other methods not mentioned in this guide via the feedback section below.
このガイドで言及されていない他の方法について、フィードバック セクションで教えてください。