.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd" .\" .\" 21 Maggio 1996 .\" Autore della pagina di manuale: .\" Tony Nugent .\" Modificato da Bram Moolenaar .SH NOME .I xxd \- Produce lista esadecimale da un file binario o viceversa. .SH SINTASSI .B xxd \-h[elp] .br .B xxd [opzioni] [input_file [output_file]] .br .B xxd \-r[evert] [opzioni] [input_file [output_file]] .SH DESCRIZIONE .I xxd crea un'immagine esadecimale di un dato file o dello `standard input'. Può anche ricostruire da un'immagine esadecimale il file binario originale. Come .BR uuencode (1) e .BR uudecode (1) permette di trasmettere dati binari in una rappresentazione ASCII `a prova di email', ma ha anche il vantaggio di poter decodificare sullo `standard output'. Inoltre, può essere usato per effettuare delle modifiche (patch) a file binari. .SH OPZIONI Se non si specifica un .I input_file il programma legge dallo `standard input'. Se .I input_file è specificato come il carattere .RB \` \- ' , l'input è letto dallo `standard input'. Se non si specifica un .I output_file (o si mette al suo posto il carattere .RB \` \- ' ), i risultati sono inviati allo `standard output'. .PP Si noti che la scansione dei caratteri è "pigra", e non controlla oltre la prima lettera di un'opzione, a meno che l'opzione sia seguita da un parametro. Gli spazi fra una singola lettera di opzione e il relativo parametro sono facoltativi. I parametri delle opzioni possono essere specificati usando la notazione decimale, esadecimale oppure ottale. Pertanto .BR \-c8 , .BR "\-c 8" , .B \-c 010 e .B \-cols 8 sono notazioni equivalenti fra loro. .PP .TP .IR \-a " | " \-autoskip Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off. .TP .IR \-b " | " \-bits Richiesta di una immagine binaria (cifre binarie), invece che esadecimale. Quest'opzione scrive un byte come otto cifre "1" e "0" invece di usare i numeri esadecimali. Ogni riga è preceduta da un indirizzo in esadecimale e seguita da una decodifica ASCII (o EBCDIC). Le opzioni specificabili dalla riga comando \-r, \-p, \-i non funzionano in questo modo. .TP .IR "\-c colonne " | " \-cols colonne" In ogni riga sono formattate .RI < colonne > colonne. Valore di default 16 (\-i: 12, \-ps: 30, \-b: 6). Non c'è un valore massimo per \-ps; se si specifica 0 viene scritta un'unica lunga riga di output. .TP .IR \-C " | " \-capitalize Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa \-i. .TP .IR \-E " | " \-EBCDIC Cambia la codifica della colonna di destra da ASCII a EBCDIC. Questo non modifica la rappresentazione esadecimale. Non ha senso specificare quest'opzione in combinazione con \-r, \-p o \-i. .TP .IR \-e Considera la lista esadecimale come avente codifica `little-endian'. Quest'opzione tratta i gruppi di byte come parole in codifica `little-endian'. Il raggruppamento di default dei byte a 4 a 4 può essere cambiato usando .RI "" \-g . Quest'opzione si applica solo alla lista esadecimale, Lasciando inalterata la rappresentazione ASCII (or EBCDIC). Le opzioni della riga di comando \-r, \-p, \-i non funzionano in questa modalità. .TP .IR "\-g numero " | " \-groupsize numero" Separa ogni gruppo di .RI < numero > byte in output (di due caratteri esadecimali o otto caratteri binari ognuno) con uno spazio bianco. Specificando .I \-g 0 i byte di output non sono separati da alcuno spazio. .RI < Numero "> ha come valore di default " 2 in modalità normale [esadecimale], \fI4\fP in modalità `little-endian' e \fI1\fP in modalità binaria. Il raggruppamento non si applica agli stili `PostScript' e `include'. .TP .IR \-h " | " \-help Stampa un sommario dei comandi disponibili ed esce. Non viene fatto null'altro. .TP .IR \-i " | " \-include L'output è un file `include' in C. Viene preparata la definizione completa del vettore (col nome del file di input), tranne quando xxd legga dallo `standard input'. .TP .IR "\-l numero " | " \-len numero" Il programma esce dopo aver scritto .RI < numero > byte. .TP .I "\-n nome " | " \-name nome" Specifica il nome del vettore in output quando si usa \-i. Il vettore viene chiamato \fInome\fP e la sua lunghezza viene chiamata \fInome\fP_len. .TP .I \-o incremento Aggiunge .RI < incremento > alla posizione visualizzata dei byte del file. .TP .IR \-p " | " \-ps " | " \-postscript " | " \-plain L'output è nello stile di un dump esadecimale continuo sotto postscript. Noto anche come stile esadecimale semplice. .TP .IR \-r " | " \-revert Ricostruisce: converte (o mette una patch) da immagine esadecimale, a file binario. Se non scrive sullo `standard output', xxd scrive nel file di output in maniera continua, senza interruzioni. Usare la combinazione .I \-r \-p per leggere dump in stile esadecimale semplice, senza l'informazione del numero di riga e senza un particolare tracciato di colonna. Spazi o righe vuote possono essere presenti [e vengono ignorati]. .TP .IR \-R " "[quando] Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a distinguere i caratteri stampabili da quello non stampabili. .I quando può assumere i valori .BR never ", " always ", o " auto . .TP .I \-seek distanza Usato con l'opzione .IR \-r : (ricostruzione), .RI < distanza > viene aggiunta alla posizione nel file trovata nella immagine esadecimale. .TP .I \-s [+][\-]seek Inizia a .RI < seek > byte assoluti (o relativi) di distanza all'interno di input_file. \fI+ \fRindica che il `seek' è relativo alla posizione corrente nel file `standard input' (non significativo quando non si legge da `standard input'). \fI\- \fRindica che il `seek' dovrebbe posizionarsi al numero specificato di caratteri dalla fine dell'input (o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input'). Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file. .TP .I \-u Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole. .TP .IR \-v " | " \-version Visualizza la stringa contenente la versione del programma. .SH ATTENZIONE .PP .I xxd \-r è capace di operare "magie" nell'utilizzare l'informazione "numero di riga". Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file. Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari. .PP .I xxd \-r non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati. .PP Nel modificare immagini esadecimali, si tenga conto che .I xxd \-r salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali (vedere opzione \-c). Ciò implica pure che le modifiche alle colonne di caratteri stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è interpretata [e utilizzata]. .PP Notare la differenza fra .br \fI% xxd \-i file\fR .br e .br \fI% xxd \-i \< file\fR .PP .I xxd \-s \+seek può comportarsi in modo diverso da .IR "xxd \-s seek" , perché lseek(2) è usata per tornare indietro nel file di input. Il '+' fa differenza se il file di input è lo `standard input', e se la posizione nel file di `standard input' non è all'inizio del file quando xxd è eseguito, e riceve input. I seguenti esempi possono contribuire a chiarire il concetto (o ad oscurarlo!)... .PP Riavvolge lo `standard input' prima di leggere; necessario perché `cat' ha già letto lo stesso file fino alla fine dello `standard input'. .br \fI% sh \-c "cat > copia_normale; xxd \-s 0 > copia_esadecimale" < file\fR .PP Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi. Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128' si aggiunge a 1k (1024) dove `dd' si era fermato. .br \fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale" < file\fR .PP Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti. .br \fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file .PP Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai. L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s. .SH ESEMPI .PP .br Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di .BR file \. .br \fI% xxd \-s 0x30 file\fR .PP .br Stampa 3 righe (0x30 byte in esadecimale) alla fine di .BR file . .br \fI% xxd \-s \-0x30 file .PP .br Stampa 120 byte come immagine esadecimale continua con 20 byte per riga. .br \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR .br 2e54482058584420312022417567757374203139 .br 39362220224d616e75616c207061676520666f72 .br 20787864220a2e5c220a2e5c222032317374204d .br 617920313939360a2e5c22204d616e2070616765 .br 20617574686f723a0a2e5c2220202020546f6e79 .br 204e7567656e74203c746f6e79407363746e7567 .br .br Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga. .br \fI% xxd \-l 120 \-c 12 xxd.1\fR .br 0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A .br 000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" .br 0000018: 224d 616e 7561 6c20 7061 6765 "Manual page .br 0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ .br 0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M .br 000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" .br 0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut .br 0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" .br 0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent .br 000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR .br .br Modificare (patch) la data nel file xxd.1 .br \fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR .br \fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR .br 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 .PP .br Creare un file di 65537 byte tutto a 0x00, tranne l'ultimo carattere che è una 'A' (esadecimale 0x41). .br \fI% echo "010000: 41" | xxd \-r > file\fR .PP .br Stampa una immagine esadecimale del file di cui sopra con opzione autoskip. .br \fI% xxd \-a \-c 12 file\fR .br 0000000: 0000 0000 0000 0000 0000 0000 ............ .br * .br 000fffc: 0000 0000 40 ....A .PP Creare un file di 1 byte che contiene il solo carattere 'A'. Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file; in pratica, i byte precedenti non sono stampati. .br \fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR .PP Usare xxd come filtro all'interno di un editor come .B vim(1) per ottenere l'immagine esadecimale della parte di file fra i marcatori `a' e `z'. .br \fI:'a,'z!xxd\fR .PP Usare xxd come filtro all'interno di un editor come .B vim(1) per ricostruire un pezzo di file binario da un'immagine esadecimale fra i marcatori `a' e `z'. .br \fI:'a,'z!xxd \-r\fR .PP Usare xxd come filtro all'interno di un editor come .B vim(1) per ricostruire una sola riga di file binario da un'immagine esadecimale. Portare il cursore sopra la riga e battere: .br \fI!!xxd \-r\fR .PP Leggere singoli caratteri da una linea seriale .br \fI% xxd \-c1 < /dev/term/b &\fR .br \fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR .br \fI% echo \-n foo > /dev/term/b\fR .PP .SH CODICI DI RITORNO Il programma può restituire questi codici di errore: .TP 0 nessun errore rilevato. .TP \-1 operazione non supportata \%(\c .I xxd \-r \-i non ancora possible). .TP 1 errore durante la scansione parametri. .TP 2 problemi con il file di input. .TP 3 problemi con il file di output. .TP 4,5 posizione `seek' specificata non raggiungibile all'interno del file. .SH VEDERE ANCHE uuencode(1), uudecode(1), patch(1) .br .SH AVVERTIMENTI La stranezza dello strumento rispecchia la mente del suo creatore. Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago. .br .SH VERSIONE Questa pagina di manuale documenta la versione 1.7 di xxd. .SH AUTORE .br (c) 1990-1997 Juergen Weigert .br .LP Distribuite liberamente ed attribuitemi il credito, .br fate soldi e condivideteli con me .br perdete soldi e non venite a chiederli a me. .PP Pagina di manuale iniziata da Tony Nugent .br .br Piccole modifiche di Bram Moolenaar. Modificato da Juergen Weigert. .PP