GNU/Linux >> Znalost Linux >  >> Linux

Nejúčinnější způsob, jak vyprázdnit obsah souboru?

Znám tři způsoby, jak odstranit všechny položky ze souboru.

Jsou

  • >filename
  • touch filename
  • filename < /dev/null

Z těchto tří zneužívám >filename nejvíce, protože to vyžaduje nejmenší počet úhozů.

Rád bych však věděl, která z těchto tří metod je nejúčinnější (pokud existují nějaké efektivnější metody) s ohledem na velké soubory protokolu a malé soubory.

Také, jak fungují tyto tři kódy a jak vymazávají obsah?

Upravit :jak je uvedeno v této odpovědi, ve skutečnosti to není vymažte soubor!

Přijatá odpověď:

Ve skutečnosti druhý tvar touch filename ze souboru nic nesmaže – pouze vytvoří prázdný soubor, pokud žádný neexistuje, nebo aktualizuje datum poslední změny existujícího souboru.

A třetí filename < /dev/null pokusí se spustit název souboru s /dev/null jako vstup.

cp /dev/null filename funguje.

Pokud jde o efektivitu, nejúčinnější by bylo truncate -s 0 filename (viz zde).

Jinak cp /dev/null filename nebo > filename jsou oba v pohodě. Oba soubor otevřou a poté zavřou pomocí nastavení zkrácení při otevření. cp také otevře /dev/null , takže je o něco pomalejší.

Na druhou stranu truncate bude pravděpodobně pomalejší než > filename při spuštění ze skriptu, protože spuštění příkazu truncate vyžaduje, aby systém otevřel spustitelný soubor, načetl jej a poté spustil.


Linux
  1. Kopírovat obsah souboru do schránky bez zobrazení jeho obsahu?

  2. Jak předat obsah souboru jako parametr příkazového řádku?

  3. Jak příkaz Sed ‚1!g;h;$!d‘ obrátí obsah souboru?

  1. lsinitramfs:Výpis obsahu souborového systému initrd.

  2. Nejúčinnější způsob kopírování souboru v Linuxu

  3. Jak získat pouze počet řádků souboru

  1. Zkopírujte obsah souboru do schránky v terminálu Linux

  2. Jak vymazat obsah souboru z příkazového řádku?

  3. Jak rekurzivně zobrazit obsah souboru?