私はファイルからすべての項目を削除する3つの方法を知っています。
彼ら
>filename
touch filename
1filename < /dev/null
>filename
3つのうち、最も少ない数のキーストロークが必要なため、最も濫用されます。
しかし、大容量ログファイルと小さなファイルについて、これら3つの方法のうちどれが最も効率的か(より効率的な方法がある場合)を知りたいです。
さらに、これらの3つのコードはどのようにコンテンツを操作して削除しますか?
1編集する:で議論したようにこの回答、これは実際に確かにファイルを削除してください!
ベストアンサー1
実際、2番目のフォームはtouch filename
ファイルから何も削除しません。ファイルが存在しない場合は、空のファイルを作成するか、既存のファイルの最後の変更日を更新します。
3番目はfilenameを入力としてfilename < /dev/null
実行しようとします。/dev/null
cp /dev/null filename
働く
効率の面で最も効果的なものは次のとおりですtruncate -s 0 filename
(参照ここ)。
そうでなければ、両方ともcp /dev/null filename
大丈夫> filename
です。両方を開くと、切り捨て設定を使用してファイルを開いて閉じます。 cp
も点灯しているので/dev/null
少し遅くなります。
一方、truncateコマンドを実行するには、システムで実行可能ファイルを開いてロードしてから実行する必要があるため、スクリプトで実行するよりも遅くなる可能性がありますtruncate
。> filename