GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Linux dd vysvětlený pro začátečníky (8 příkladů)

Někdy při práci na příkazovém řádku v Linuxu možná budete muset provést operaci kopírování tak, aby se data/text před zapsáním do cíle naformátovaly. Jednoduchým příkladem může být zkopírování textu ze souboru a zapsání verze se změněnou velikostí písmen (z nižší na horní nebo z horní na nižší) do cílového souboru.

Pokud jste hledali způsob, jak toho dosáhnout, budete rádi, že existuje nástroj příkazového řádku – nazvaný dd - která je pro tento účel postavena. V tomto tutoriálu budeme diskutovat o tom, jak nástroj funguje, pomocí několika snadno pochopitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny zde uvedené příklady byly testovány na Ubuntu 18.04LTS.

Příkaz Linux dd

Stručně řečeno, dd příkaz umožňuje kopírovat a převádět soubor. Nástroj nabízí některé operandy, pomocí kterých můžete určit, jaký druh formátování chcete. Zde je generická syntaxe příkazu, jak je popsána na jeho manuálové stránce:

dd [OPERAND]...
dd OPTION

Následující příklady typu Q&A by vám měly poskytnout dobrou představu o tom, jak příkaz dd funguje.

O1. Jak změnit velikost písmen ve vstupním textu pomocí příkazu dd?

Předpokládejme, že máte nějaké řádky textu napsané malými písmeny a požadavkem je rychle je převést na velká písmena. Můžete to udělat pomocí konv možnost příkazového řádku (s ucase jako jeho hodnotu).

Zde je příklad:

Výše uvedený snímek obrazovky ukazuje příkaz i vstupní text. Kombinace kláves Ctrl+d byl použit k tomu, aby řekl dd, že jsme skončili se zadáváním vstupu, a jakmile to bylo provedeno, příkaz vytvořil následující výstup:

Můžete tedy vidět, že vstupní text byl převeden z malých písmen na velká. Poslední tři řádky jsou jen některé statistiky související s operacemi.

Poznámka :Podobně můžete použít hodnotu lcase převést text z velkých písmen na malá písmena.

Q2. Jak místo toho číst a zapisovat do souborů?

V prvním příkladu výše jsme zadali text přes stdin (standardní vstup). Vždy však můžete použít vstupní a výstupní soubory. Chcete-li zadat názvy vstupních a výstupních souborů, použijte if a z možnosti příkazového řádku.

Pokud například chcete převést velká a malá písmena textu v souboru1 a poté jej zapsat do souboru2, můžete to provést následujícím způsobem:

dd if=file1 of=file2 conv=ucase

Q3. Jak přeskočit text při čtení vstupu?

Pokud chcete, můžete požádat dd, aby při čtení vstupního textu vynechal některé počáteční bajty. To lze provést pomocí přeskočit možnost, která vyžaduje číselnou hodnotu. Pokud je tato hodnota řekněme 'N', pak dd přeskočí N bloků o velikosti ibs na začátku vstupu. To nás přivádí k 'ibs', což je také další možnost příkazového řádku dd, jejíž hodnota určuje počet bajtů, které nástroj najednou přečte (výchozí je 512).

Předpokládejme tedy, že chcete přeskočit první 4 bajty vstupního souboru, pak byste měli nejprve nastavit ibs na 4 a poté použijte 1 jako hodnotu pro přeskočit . To zajistí, že nástroj při čtení vstupního souboru přeskočí 1 blok o 4 bytech.

Takže vidíte, že text ahoj, byl při čtení file1 přeskočen – proto se neobjevil v file2.

Q4. Jak zaměnit každý pár vstupních bajtů na výstupu?

Pokud existuje takový požadavek, můžete také použít dd k prohození každého páru vstupních bajtů. Toho lze dosáhnout pomocí taponu jako hodnotu pro konv možnost příkazového řádku. Následující snímek obrazovky vše objasní:

O5. Jak zajistit, aby dd fungovalo pouze v případě, že výstupní soubor ještě neexistuje?

Pokud je požadavkem, aby příkaz dd nedělal nic, když výstupní soubor již existuje, lze tuto podmínku vynutit pomocí excl hodnotu konv možnost.

Následující snímek obrazovky ukazuje případ použití v akci:

O6. Jak zajistit, aby byl výstupní soubor aktualizován v režimu připojení?

Ve výchozím nastavení dd pouze přepíše výstupní soubor (pokud existuje). Pokud ale chcete, aby místo toho připojil text, použijte hodnotu append pro příznak FLAG a notrunc pro konv. možnost.

Například:

dd if=file1 of=file3 oflag=append conv=notrunc

Zde je výše uvedený příkaz v akci:

O7. Jak zajistit, aby dd nevytvářel výstupní soubor?

Pokud chcete, můžete také vynutit příkaz dd, aby nevytvářel výstupní soubor, pokud soubor uvedený v příkazu již neexistuje. To lze provést pomocí nocreat hodnotu konv možnost příkazového řádku.

Například:

O8. Jak ovládat úroveň informací vytištěných na stderr?

Pokud chcete, můžete také omezit množství informací, které příkaz vytiskne na stderr. To lze provést pomocí stavu možnost příkazového řádku. Pokud například chcete potlačit vše kromě chybových zpráv, můžete předat hodnotu none na tuto možnost příkazového řádku:

dd if=file1 of=file3 status=none

Další dostupné hodnoty jsou noxfer a pokrok . Zde je to, co manuálová stránka říká o stavu možnost:

status=LEVEL
              ÚROVEŇ informací, které se mají vytisknout na stderr; 'none' potlačí
              vše kromě chybových zpráv,  'noxfer'  potlačí  konečnou 
              statistiky přenosu, 'progress' zobrazuje pravidelné statistiky přenosu?
                tic

Závěr

Příklady probírané v tomto tutoriálu jen poškrábou povrch, když dojde na prozkoumání toho, co všechno příkaz dd umí. Pro představu, nástroj můžete použít k vytváření virtuálních souborových systémů i zálohování pevných disků nebo systémových oddílů. Pro více informací o dd přejděte na jeho manuálovou stránku.


Linux
  1. Linuxový příkaz paste vysvětlený pro začátečníky (5 příkladů)

  2. Příkaz wc pro Linux vysvětlený pro začátečníky (6 příkladů)

  3. Linuxový příkaz objdump vysvětlený pro začátečníky (7 příkladů)

  1. Linuxový příkaz dir pro začátečníky (10 příkladů)

  2. Linux unexpand Command Vysvětlený pro začátečníky (s příklady)

  3. Příkaz ukončení Linuxu vysvětlený pro začátečníky (s příklady)

  1. Příkaz Linux Csplit vysvětlený pro začátečníky (6 příkladů)

  2. Linuxový příkaz dirname vysvětlený pro začátečníky (4 příklady)

  3. Linux Free Command vysvětlený pro začátečníky (6 příkladů)