GNU/Linux >> Znalost Linux >  >> Linux

Alternativa k „dd“, která soubor nezkrátí?

Zná někdo alternativu pro „dd“, která nezkrátí soubor bez použití:conv=notrunc . Přidání conv=notrunc není podporováno přes busybox/toybox kvůli omezenému prostoru.

Například bych chtěl ekvivalent

dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc

Ale to by fungovalo tam, kde dd nepodporuje conv=notrunc .

Přijatá odpověď:

Použijte standardní <> sh operátor přesměrování, který otevře soubor v režimu čtení+zápis bez zkrácení .

cat < file.in 1<> file.out

Chcete-li zkopírovat obsah souboru file.in na začátku file.out .

Pokud potřebujete hledat ve vstupním nebo výstupním souboru a za předpokladu, že vaše dd stále podporuje tyto směrnice:

dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out

Pokud nemáte dd vůbec, můžete zkusit head -c , za předpokladu, že se vaše verze postará o ponechání ukazatele v souboru na správném místě po ukončení (což IIRC starší verze busyboxu nedělaly).

Například ekvivalent výše uvedeného by byl:

{
  head -c 8 > /dev/null        # seek input fd to offset 8
  head -c 12 <&1 > /dev/null   # seek output fd to offset 12
  head -c 12                   # copy 12 bytes
} < file.in 1<> file.out

Linux
  1. The Bash ‘?

  2. Je MV Atomic na Fs?

  3. Je možné zjistit, který Vim/tmux má soubor otevřený?

  1. Jaký je unixový příkaz ke zjištění, jaký spustitelný soubor odpovídá danému příkazu?

  2. Jak zkrátit soubor podle řádků?

  3. K čemu v symbolickém odkazu ukazujícím na „127.0.1.1:+xxxxx“ je znak plus?

  1. Proč skript Bash nerozpozná aliasy?

  2. Který software pro kompresi souborů pro Linux nabízí největší zmenšení velikosti?

  3. Který soubor v /proc čte jádro během procesu spouštění?