Next: Esempi
Up: dd, il duplicatore di
Previous: dd, il duplicatore di
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 xm
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
Eugenia Franzoni
1998-09-29