ファイルからすべてのエントリを削除する3つの方法を知っています。
彼らは
>ファイル名タッチファイル名ファイル名
これら3つのうち、私は> filenameを悪用します 必要なキーストロークの数が最も少ないためです。
ただし、大きなログファイルと小さなファイルに関して、3つのうちどれが最も効率的か(より効率的な方法がある場合)を知りたいです。
また、3つのコードはどのように動作し、内容を削除しますか?
編集 :この回答で説明されているように、これは実際にはそうではありません ファイルをクリアしてください!
承認された回答:
実際、2番目の形式の touch filename ファイルから何も削除されません。空のファイルが存在しない場合にのみ作成されるか、既存のファイルの最終変更日が更新されます。
そして3番目のfilename / dev / nullでファイル名を実行しようとします 入力として。
cp / dev/nullファイル名 動作します。
効率的である場合、最も効率的なのは truncate -s 0 filenameです。 (ここを参照)。
それ以外の場合は、 cp / dev / null filename または>filename どちらも大丈夫です。どちらも、truncate-on-open設定を使用して、ファイルを開いてから閉じます。 cp / dev / nullも開きます 、そのため、わずかに遅くなります。
一方、 truncate > filenameよりも遅くなる可能性があります truncateコマンドを実行するためにスクリプトから実行する場合、システムは実行可能ファイルを開き、ロードしてから実行する必要があります。