GNU/Linux >> Znalost Linux >  >> Linux

dd s obs a seek vytvoří soubor neočekávané velikosti

Váš příkaz dd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1 vytvoří dvoubajtový soubor místo 10bajtového souboru kvůli špatně definované interakci mezi bs a obs . (Pokud chcete, říkejte tomu chyba programu, ale pravděpodobně je lépe definovat jako chybu dokumentace.) Měli byste použít buď bs nebo ibs a obs .

Empiricky to vypadá, že bs přepíše obs , takže to, co se spustí, je dd if=/dev/zero of=./foo count=1 bs=1 seek=1 , který vytvoří dvoubajtový soubor, jak jste viděli.

Pokud jste použili dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1 podle očekávání byste dostali 10bajtový soubor.

Alternativně, pokud chcete vytvořit prázdný soubor, který nezabere žádné místo na disku, můžete použít kontraintuitivně nazvaný truncate příkaz:

truncate --size=10 foo

Manuálová stránka POSIX uvádí:

ibs=expr

Zadejte velikost vstupního bloku v bajtech pomocí výrazu (výchozí je 512).

obs=expr

Zadejte velikost výstupního bloku v bajtech pomocí výrazu (výchozí hodnota je 512).

bs=expr

Nastavte vstup i výstup velikosti bloků na expr bajty, supersedingibs=a obs= . Pokud není specifikována žádná konverze jiná než sync, noerror anotrunc, každý vstupní blok se zkopíruje na výstup jako jeden blok bez agregace krátkých bloků.

Linux dd funguje stejným způsobem. Použijte tedy ibs místo toho:

dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1

Linux
  1. Linux odstranit soubor s velikostí 0

  2. Opakujete video s gstreamerem a gst-launch?

  3. AWK a názvy souborů s mezerou.

  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. Zachování oprávnění souborů a složek pomocí rsync

  3. Připojte pomocí sshfs a oprávnění k zápisu do souboru

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Šifrování a dešifrování souborů je s GPG snadné

  3. Šifrování a dešifrování souborů pomocí ccrypt