ウェブサイト検索

Linux で大きなファイルのコンテンツを空にするか削除する 5 つの方法


Linux ターミナルでファイルを処理しているときに、必ずしも Linux コマンド ライン エディタを使用して開かずにファイルの内容をクリアしたい場合があります。どうすればこれを達成できるでしょうか?

この記事では、いくつかの便利なコマンドを使用して、ファイルの内容を空にするいくつかの異なる方法を説明します。

注意: さまざまな方法を検討する前に、Linux ではすべてがファイルであるため、空にしているファイルが重要なユーザー ファイルやシステム ファイルではないことを常に確認する必要があることに注意してください。 。重要なシステムまたは構成ファイルの内容をクリアすると、致命的なアプリケーション/システムのエラーまたは障害が発生する可能性があります。

そうは言っても、以下はコマンドラインからファイルの内容をクリアする手段です。

重要: この記事では、次の例でファイル access.log を使用しています。

1. Null にリダイレクトしてファイルの内容を空にする

以下のようにシェル リダイレクト null (存在しないオブジェクト) を使用してファイルのコンテンツを空または空白にする最も簡単な方法:

> access.log

2.「true」コマンド リダイレクトを使用した空のファイル

ここではシンボル を使用します。true コマンドと本質的に同等のシェル組み込みコマンドであり、no-op (操作なし) として使用できます。 。

別の方法は、次のように : または true 組み込みコマンドの出力をファイルにリダイレクトすることです。

: > access.log
OR 
true > access.log

3. /dev/null で cat/cp/dd ユーティリティを使用して空のファイルを作成する

Linux では、null デバイスは基本的に、プロセスの不要な出力ストリームを破棄するために、または入力ストリームに適した空のファイルとして使用されます。これは通常、リダイレクト メカニズムによって行われます。

したがって、 /dev/null デバイス ファイルは、送信された入力を書き込む (削除する) か、出力が空のファイルと同じになる特別なファイルです。

さらに、cat コマンドを使用して /dev/null の出力を入力としてファイル (ファイル) にリダイレクトすることで、ファイルの内容を空にすることができます。

cat /dev/null > access.log

次に、cp コマンドを使用して、次のようにファイルの内容を空白にします。

cp /dev/null access.log

次の dd コマンドでは、if は入力ファイルを意味し、of は出力ファイルを指します。

dd if=/dev/null of=access.log

4. echoコマンドを使用してファイルを空にする

ここで、次のように空の文字列を指定して echo コマンドを使用し、ファイルにリダイレクトできます。

echo "" > access.log
OR
echo > access.log

: 空の文字列は null と同じではないことに留意する必要があります。文字列は空であってもすでにオブジェクトですが、null は単にオブジェクトが存在しないことを意味します。

このため、上記の echo コマンドの出力をファイルにリダイレクトし、cat コマンドを使用してファイルの内容を表示すると、空の行 (空の文字列) が出力されます。

ファイルに null 出力を送信するには、フラグ -n を使用します。これは、前のコマンドで生成された空行につながる末尾の改行を出力しないように echo に指示します。

echo -n "" > access.log

5. truncateコマンドを使用してファイルを空にする

truncate コマンドは、ファイルのサイズを定義されたサイズまで縮小または拡張するのに役立ちます。

ファイルサイズを指定する -s オプションとともに使用できます。ファイルの内容を空にするには、次のコマンドのようにサイズ 0 (ゼロ) を使用します。

truncate -s 0 access.log

今回はこれで終わりです。この記事では、単純なコマンド ライン ユーティリティとシェル リダイレクト メカニズムを使用してファイルの内容をクリアまたは空にする複数の方法を説明しました。

おそらくこれらがこれを行う唯一の実用的な方法ではないため、このガイドで言及されていない他の方法についても、以下のフィードバック セクションからお知らせください。