# Dd

dd és una ordre de la família dels sistemes operatius Unix que permet copiar i convertir dades de fitxers a baix nivell. Està especificada per l'estàndard IEEE Std 1003.1-2008, que és part de la Single UNIX Specification. Generalment s'usa per realitzar operacions avançades sobre dispositius o fitxers, com poden ser:
* Transferències de dades específiques.
* Còpies de seguretat de la informació en cru (raw data).
* Conversió d'algunes codificacions suportades i/o caràcters predefinits.

## Descripció

És de molta importància aclarir que en sistemes operatius Unix, qualsevol dispositiu és tractat com un fitxer. Per tant, la comanda dd, pot ser utilitzada en diversos dispositius i volums (particions), més enllà dels fitxer pròpiament dits.
Segons l'especificació POSIX, dd copia el fitxer especificat com a origen cap al fitxer indicat com a destinació, tenint en compte la conversió de les dades i la mida de bloc, si és que s'ha specificat, per realitzar tant la lectura sobre l'origen com l'escriptura en destí. En cas que no s'hagi especificat un origen i/o destí, dd per defecte utilitza l'entrada i sortida estàndard, respectivament, per dur a terme l'operació.
Si s'ha especificat la mida de blocs per a la transferència (lectura/escriptura), mitjançant el paràmetre bs, i no s'ha indicat cap conversió llevat noerror,notrunc o sync, es procedeix a la lectura d'un bloc a la vegada de l'origen i l'escriptura d'aquest en destí. La mida del bloc a escriure és el mateix que el de la d'entrada, excepte quan s'indica la conversió sync, que en aquest cas es procedeix a omplir amb zeros el bloc de destí. Si no s'utilitza sync, l'últim bloc a escriure pot tenir una grandària menor.
D'altra banda, en cas que no s'hagi especificat una mida de bloc, dd utilitza 512 bytes com mida per defecte.

## Mode d'ús

L'ús de la comanda dd té el següent format:
* dd [PARÀMETRE] ...
Els principals paràmetres són:

### If =origen

    Llegeix de l'arxiu indicat com a origen. Per defecte llegeix de l'entrada estàndard.

### Of =destí

    Escriu arxiu indicat com destí. Per defecte escriu a la sortida estàndard.

### IBS =N

    Llegeix de a N bytes des de l'origen.

### Obstant =N

    Escriu de a N bytes cap al destí.

### Bs =N

    Llegeix i escriu N bytes. Alternativa a usar IBS i obstant amb un mateix valor.

### CBS =N

    Estableix en N bytes la mida del bloc de conversió per block i unblock.

### Skip =N

    Es salta N blocs de l'origen abans realitzar l'operació de copiar. La mida del bloc és indicat per IBS.

### Seek = N

    Se salta N blocs del destí abans realitzar l'operació de copiar. La mida del bloc és indicat per obstant.

### Count =nombre

    Copia un nombre de blocs de l'origen, en lloc de processar fins al final. La mida del bloc és indicat per IBS.

### Conv =manera [, manera, ...]

    Realitza les operacions de conversió, segons s'indiqui. Es poden indicar més d'una conversió, separant-les per comes.
    Conversions suportades:

      ### Ascii

          Converteix els caràcters EBCDIC a ASCII.

      ### EBCDIC

          Converteix els caràcters ASCII a EBCDIC.

      ### Ibm

          Converteix els caràcters ASCII al EBCDIC de IBM.

      ### Lcase

          Intercanvia les majúscules per minúscules.

      ### Ucase

          Intercanvia les minúscules per majúscules.

      ### Swab

          Intercanvia cada parell de bytes de l'entrada. Per al cas especial de l'últim byte, aquest es cópia directament.

      ### Noerror

          No s'atura el procés davant errors de lectura a l'origen.

      ### Notrunc

          No es trunca el fitxer utilitzat com destí.

      ### Sync

          Omple cada bloc llegit amb zeros, fins a la mida determinada per IBS.

      ### Block

          Omplir amb espais en blanc la línia llegida, fins a la mida indicada per CBS. Reemplaça el caràcter de nova línia per espais, convertint la línia en un bloc (o registre).

      ### Unblock

          Reemplaçar els últims espais en blanc per un caràcter de salt de línia del registre llegit, que tingui la mida indicat per CBS. Realitza l'operació inversa a bloc.

## Referències

* ↑ http://www.unix.com/man-page/POSIX/1/dd/ dd