Keywords: guide

Next: Esempi Up: dd, il duplicatore di Previous: dd, il duplicatore di

## Opzioni

A dire la verità, `dd` non è proprio diverso dagli altri comandi Unix: è un filtro, che legge per default dall'input standard e scrive sull'output standard. Così, se digitate semplicemente dd al terminale, resta in silenzio aspettando dell'input, e ctrl-C è l'unica cosa sensata da digitare.

La sintassi del comando è la seguente:

`dd` [if=file] [of=file] [ibs= byte] [obs=byte] [bs=byte] [cbs=byte] [skip=blocchi]
[seek=blocchi] [count=blocchi] [conv={ascii, ebcdic, ibm, block, unblock,
lcase, ucase, swab, noerror, notrunc, sync}]

Tutte le opzioni hanno la forma opzione=valore. Non sono permessi spazi né prima né dopo il segno di uguale; disturbava, dato che la shell in una situazione del genere non espandeva un nome di file, quindi non ve ne dovete preoccupare. È anche importante riordare che tutti i valori sotto forma di numeri (`byte` e `blocchi` qui sopra) possono essere seguiti da un moltiplicatore. Le possibili scelte sono b per blocchi, che moltiplica per 512, k per kilobyte (1024), w per parole (2) e `x`m moltiplica per m.

La spiegazione delle opzioni è data qui sotto.

- if=filein e of=fileout dicono a `dd` rispettivamente di leggere da filein e scrivere su fileout. Nell'ultimo caso, il file di output viene troncato al valore dato a `seek`, o, se la parola chiave non è presente, a 0 (cioè viene cancellato), prima di fare l'operazione. Ma date un'occhiata all'opzione `notrunc`.

- ibs=nn e obs=nn specificano quanti byte devono essere letti o scritti alla volta. Credo che il default sia 1 blocco, cioè 512 byte, ma non ne sono molto sicuro: quello che è sicuro è che funziona in quel modo con i file semplici. Questi parametri sono molto importanti quando si usano device speciali come input o output; ad esempio, leggere dalla rete dovrebbe impostare `ibs` a 10k, mentre un floppy da 3.5'' ad alta densità ha la sua naturale grandezza di blocchi a 18k. Non impostare questi valori può non solo aumentare il tempo di compimento del comando, ma anche portare ad errori di timeout, quindi state attenti.

- bs=nn legge e scrive nn byte alla volta. Supera le parole chiave `ibs` e `obs`.

- cbs=nn imposta i buffer di conversione a nn byte. Questi buffer vengono usati quando si traduce da ASCII a EBCDIC o da un dispositivo senza blocchi ad uno che li ha. Ad esempio, i file creati sotto VMS hanno spesso blocchi di 512 byte, cosicché bisogna impostare `cbs` a 1b quando si legge un nastro VMS. Spero che non dobbiate mai lottare con questo tipo di cose!

- skip=nbl e seek=nbl dicono al programma di saltare nbl blocchi rispettivamente all'inizio dell'input ed all'inizio dell'output. Naturalmente il secondo caso ha senso se si dà la conversione `notrunc` (vedere sotto). Le dimensioni di ogni blocco sono il valore di `ibs` (`obs`). Attenzione: se non avete impostato `ibs` e scrivete `skip=1b` state in realtà saltando 512170#170512 byte, cioè 256KB. Non è precisamente quello che volevate, no?

- count=nbl copia solo nbl blocchi dall'input, ognuno delle dimensioni date da `ibs`. Questa opzione, insieme alla precedente, rimane utile se per esempio avete un file corrotto e volete recuperarne il più possibile: saltate le parti illeggibili e prendete quello che resta.

- conv=conversione,[conversione...] converte il file come specificato dall'argomento. Le conversioni possibili sono ascii, che converte da EBCDIC ad ASCII, ebcdic e `ibm`, che fanno entrambe una conversione inversa (sì, non c'è un'unica conversione da EBCDIC ad ASCII! La prima è quella standard, ma la seconda funziona meglio se dovete stampare i file su una stampante IBM), block, che porta linee che finiscono con un carattere di newline alla lunghezza di `cbs`, sostituendo la newline con degli spazi, unblock, che fa l'opposto (elimina gli spazi in fondo alla linea, e li sostituisce con un carattere di newline), lcase e ucase, per convertire il testo da maiuscole a minuscole e viceversa, swab, che scambia ogni coppia di byte di input (ad esempio ne avete bisogno per usare un file contenente degli interi corti scritto su una macchina 680x0 con una macchina Intel), noerror, per continuare ad agire su un file anche dopo aver incontrato errori, e sync, che porta i blocchi di input alla dimensione di `ibs` aggiungendo dei caratteri NUL alla fine.

Next: Esempi Up: dd, il duplicatore di Previous: dd, il duplicatore di