blob: 0bdc792e8715a63bfbac5131156413dc48cdf02e [file] [log] [blame]
Bram Moolenaar60c78922005-03-20 22:40:14 +00001.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd"
2.\"
3.\" 21 Maggio 1996
4.\" Autore della pagina di manuale:
5.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
6.\" Modificato da Bram Moolenaar <Bram@vim.org>
7.SH NOME
8.I xxd
9\- Produce esadecimale da un file binario o viceversa.
10.SH SINTASSI
11.B xxd
12\-h[elp]
13.br
14.B xxd
15[opzioni] [input_file [output_file]]
16.br
17.B xxd
18\-r[evert] [opzioni] [input_file [output_file]]
19.SH DESCRIZIONE
20.I xxd
21crea un'immagine esadecimale di un dato file o dello "standard input".
22Può anche ottenere da un'immagine esadecimale il file binario originale.
23Come
24.BR uuencode(1)
25e
26.BR uudecode(1)
27permette di trasmettere dati binari in una rapresentazione ASCII "a prova
28di email", ma ha anche il vantaggio di poter decodificare sullo "standard
29output". Inoltre, può essere usato per effettuare delle modifiche (patch)
30a file binari.
31.SH OPZIONI
32Se non si specifica un
33.I input_file
34il programma legge dallo "standard input".
35Se
36.I input_file
37è specificato come il carattere
38.RB \` \- '
39, l'input è letto dallo "standard input".
40Se non si specifica un
41.I output_file
42(o si mette al suo posto il carattere
43.RB \` \- '
44), i risultati sono inviati allo "standard output".
45.PP
46Si noti che la scansione dei caratteri è "pigra", e non controlla oltre
47la prima lettera dell'opzione, a meno che l'opzione sia seguita da un
48parametro.
49Gli spazi fra una singola lettera di opzione e il corrispondente parametro
50dopo di essa sono facoltativi.
51I parametri delle opzioni possono essere specificati usando la notazione
52decimale, esadecimale oppure ottale.
53Pertanto
54.BR \-c8 ,
55.BR "\-c 8" ,
56.B \-c 010
57e
58.B \-cols 8
59sono notazioni equivalenti fra loro.
60.PP
61.TP
62.IR \-a " | " \-autoskip
63Richiesta di autoskip: Un singolo '*' rimpiazza linee di zeri binari.
64Valore predefinito: off.
65.TP
66.IR \-b " | " \-bits
67Richiesta di una immagine binaria (cifre binarie), invece che esadecimale.
68Questa opzione scrive un byte come otto cifre "1" e "0" invece di usare i
69numeri esadecimali. Ogni linea è preceduta da un indirizzo in esadecimale e
70seguita da una decodifica ascii (o ebcdic). Le opzioni specificabili dalla
71linea comando \-r, \-p, \-i non funzionano in questo modo.
72.TP
73.IR "\-c colonne " | " \-cols colonne"
74.IR "\-c colonne " | " \-cols colonne"
75In ogni linea sono formattate
76.RI < colonne >
77colonne. Valore predefinito 16 (\-i: 12, \-ps: 30, \-b: 6).
78Valore massimo 256.
79.TP
80.IR \-E " | " \-EBCDIC
81Cambia la codifica della colonna di destra da ASCII a EBCDIC.
82Questo non modifica la rappresentazione esadecimale. Non ha senso
83specificare questa opzione in combinazione con \-r, \-p o \-i.
84.TP
85.IR "\-g bytes " | " \-groupsize bytes"
86Inserisci ogni
87.RI < bytes >
88bytes di output (di due caratteri esadecimali o otto numeri binari ognuno)
89uno spazio bianco.
90Specificando
91.I \-g 0
92i bytes di output non sono separati da alcuno spazio.
93.RI < Bytes "> ha come valore predefinito " 2
94in modalità normale [esadecimale] e \fI1\fP in modalità binaria.
95Il raggruppamento non si applica agli stili "PostScript" e "include".
96.TP
97.IR \-h " | " \-help
98stampa un sommario dei comandi disponibili ed esce. Non viene fatto
99null'altro.
100.TP
101.IR \-i " | " \-include
102L'output è nello stile dei file "include" in C. Viene preparata la
103definizione completa di un "array" [vettore], dandogli il nome del
104file di input), tranne che nel caso in cui xxd legga dallo "standard input".
105.TP
106.IR "\-l lunghezza " | " \-len lunghezza"
107Il programma esce dopo aver scritto
108.RI < lunghezza >
109bytes.
110.TP
111.IR \-p " | " \-ps " | " \-postscript " | " \-plain
112L'output è nello stile di un dump continuo sotto postscript.
113Noto anche come stile esadecimale semplice [plain].
114.TP
115.IR \-r " | " \-revert
116ricostruzione: converte (o mette una patch) a partire dall'immagine
117esadecimale, creando [o modificando] il file binario.
118Se non diretto allo "standard output", xxd scrive nel suo file di output
119in maniera continua, senza interruzioni. Usare la combinazione
120.I \-r \-p
121per leggere dump in stile esadecimale semplice [plain], senza l'informazione
122di numero di linea e senza un particolare tracciato di colonna. Degli spazi
123o delle linee vuote possono essere inserite a piacere [e vengono ingorate].
124.TP
125.I \-seek distanza
126Usato con l'opzione
127.I \-r
128: (ricostruzione),
129.RI < distanza >
130viene aggiunta alla posizione nel file trovata nella immagine
131esadecimale.
132.TP
133.I \-s [\+][\-]seek
134Inizia a
135.RI < seek >
136bytes assoluti (o relativi) di distanza all'interno di input_file.
137\fI\+ \fRindica che il "seek" è relativo alla posizione corrente nel file
138"standard input" (non significativa quando non si legge da "standard input").
139\fI\- \fRindica che il "seek" dovrebbe posizionarsi ad quel numero di
140caratteri dalla fine dell'input (o se in combinazione con
141\fI \+ \fR: prime della posizione corrente nel file "standard input").
142Se non si specifica una opzione \-s option, xxd inizia alla posizione
143corrente all'interno del file.
144.TP
145.I \-u
146usa lettere esadecimali maiuscole. Il valore predefinito è di usare
147lettere minuscole.
148.TP
149.IR \-v " | " \-version
150visualizza la stringa contenente la versione del programma.
151.SH ATTENZIONE
152.PP
153.I xxd \-r
154è capace di operare "magie" nell'utilizzare l'informazione "numero di linea".
155Se sul file di output ci si può posizionare usando la "seek", il numero di
156linea all'inizio di ogni riga esadecimale può essere non ordinato, delle
157linee possono mancare delle linee, oppure esserci delle sovrapposizioni.
158In simili casi xxd userà lseek(2) per raggiungere la posizione d'inizio.
159Se il file di output non consente di usare "seek", sono permessi solo dei
160"buchi", che saranno riempiti con zeri binari.
161.PP
162.I xxd \-r
163non genera mai errori di specifica parametri. I parametri non riconosciuti
164sono silenziosamente ignorati.
165.PP
166Nel modificare immagini esadecimali, tenete conto che
167.I xxd \-r
168salta il resto della linea, dopo aver letto abbastanza caratteri contenenti
169dati esadecimali (vedere opzione \-c). Ciò implica pure che le modifiche alle
170colonne di caratteri stampabili ascii (o ebcdic) sono sempre ignorate.
171La ricostruzione da un file immagine esadecimale in stile semplice
172(postscript) con xxd \-r \-p non dipende dal numero corrretto di colonne.
173IN questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali
174è interpretata [e utilizzata].
175.PP
176Notare la differenza fra
177.br
178\fI% xxd \-i file\fR
179.br
180e
181.br
182\fI% xxd \-i \< file\fR
183.PP
184.I xxd \-s \+seek
185può comportarsi in modo diverso da
186.I xxd \-s seek
187, perché lseek(2) è usata per tornare indietro nel file di input. Il '+'
188fa differenza se il file di input è lo "standard input", e se la pozione nel
189file di "standard input" non è all'inizio del file quando xxd è eseguito,
190con questo input.
191I seguenti esempi possono contribuire a chiarire il concetto
192(o ad oscurarlo!)...
193.PP
194Riavvolge lo "standard input" prima di leggere; necessario perché `cat'
195ha già letto lo stesso file ["file"] fino alla fine dello "standard input".
196.br
197\fI% sh \-c 'cat > copia_normale; xxd \-s 0 > copia_esadecimale' < file
198.PP
199Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi.
200Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128'
201si aggiunge a 1k (1024) dove `dd' si era fermato.
202.br
203\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale' < file
204.PP
205Immagine esadecimale dalla posizione 0x100 ( = 1024-768 ) del file in avanti.
206.br
207\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +-768 > esadecimale' < file
208.PP
209Comunque, questo capita raramente, e l'uso del `+' di rado.
210L'autore preferisce monitorare il comportamento di xxd con strace(1) o
211truss(1), quando si usa l'opzione \-s.
212.SH ESEMPI
213.PP
214.br
215Stampa tutto tranne le prime tre linee (0x30 bytes esadecimali) di
216.B file
217\.
218.br
219\fI% xxd \-s 0x30 file
220.PP
221.br
222Stampa 3 linee (0x30 bytes esadecimali) alla fine di
223.B file
224\.
225.br
226\fI% xxd \-s \-0x30 file
227.PP
228.br
229Stampa 120 bytes come immagine esadecimale continua con 40 bytes per linea.
230.br
231\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
232
233.br
2342e54482058584420312022417567757374203139
235.br
23639362220224d616e75616c207061676520666f72
237.br
23820787864220a2e5c220a2e5c222032317374204d
239.br
240617920313939360a2e5c22204d616e2070616765
241.br
24220617574686f723a0a2e5c2220202020546f6e79
243.br
244204e7567656e74203c746f6e79407363746e7567
245.br
246
247.br
248Stampa i primi 120 bytes della pagina di manuale vim.1 a 12 bytes per linea.
249.br
250\fI% xxd \-l 120 \-c 12 xxd.1\fR
251
252
253.br
2540000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
255.br
256000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
257.br
2580000018: 224d 616e 7561 6c20 7061 6765 "Manual page
259.br
2600000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\
261.br
2620000030: 220a 2e5c 2220 3231 7374 204d "..\" 21st M
263.br
264000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\"
265.br
2660000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
267.br
2680000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\"
269.br
2700000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
271.br
272000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
273.PP
274.br
275Visualizza la data dal file xxd.1
276.br
277\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
278.br
2790000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
280.PP
281.br
282Copiare
283.B input_file
284su
285.B output_file
286premettendogli 100 bytes a 0x00.
287.br
288\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
289.br
290
291.br
292Modificare (patch) la data nel file xxd.1
293.br
294\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR
295.br
296\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
297.br
2980000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
299.PP
300.br
301Creare un file di 65537 tutto a 0x00,
302tranne che l'ultimo carattere che è una 'A' (esadecimale 0x41).
303.br
304\fI% echo '010000: 41' | xxd \-r \> file\fR
305.PP
306.br
307Stampa una immagine esadecimale del file di cui sopra con opzione autoskip.
308.br
309\fI% xxd \-a \-c 12 file\fR
310.br
3110000000: 0000 0000 0000 0000 0000 0000 ............
312.br
313*
314.br
315000fffc: 0000 0000 40 ....A
316.PP
317Crea un file di 1 byte che contiene il solo carattere 'A'.
318Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file;
319in pratica, i bytes precedenti non sono stampati.
320.br
321\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
322.PP
323Usare xxd come filtro all'interno di un editor come
324.B vim(1)
325per ottenere una immagine esadecimale di una parte di file
326delimitata dai mark `a' e `z'.
327.br
328\fI:'a,'z!xxd\fR
329.PP
330Usare xxd come filtro all'interno di un editor come
331.B vim(1)
332per ricostruire un pezzo di file binario da una immagine esadecimale
333delimitata dai mark `a' e `z'.
334.br
335\fI:'a,'z!xxd \-r\fR
336.PP
337Usare xxd come filtro all'interno di un editor come
338.B vim(1)
339per ricostruire una sola linea di file binario da una immagine esadecimale,
340Portare il cursore sopra la linea e battere:
341.br
342\fI!!xxd \-r\fR
343.PP
344Per leggere singoli charatteri da una linea seriale
345.br
346\fI% xxd \-c1 < /dev/term/b &\fR
347.br
348\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
349.br
350\fI% echo \-n foo > /dev/term/b\fR
351.PP
352.SH CODICI DI RITORNO
353Il programma può restituire questi codici di errore:
354.TP
3550
356nessun errore rilevato.
357.TP
358\-1
359operazione non supportata (
360.I xxd \-r \-i
361non ancora possible).
362.TP
3631
364errore durante la scansione parametri.
365.TP
3662
367problemi con il file di input.
368.TP
3693
370problemi con il file di output.
371.TP
3724,5
373posizione "seek" specificata non raggiungibile all'interno del file.
374.SH VEDERE ANCHE
375uuencode(1), uudecode(1), patch(1)
376.br
377.SH AVVERTIMENTI
378La stranezza dello strumento rispecchia la mente del suo creatore.
379Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione.
380Diventate un mago.
381.br
382.SH VERSIONE
383Questa pagina di manuale documenta la versione 1.7 di xxd.
384.SH AUTORE
385.br
386(c) 1990-1997 Juergen Weigert
387.br
388<jnweiger@informatik.uni-erlangen.de>
389.LP
390Distribuite liberamente ed attribuitemi il credito,
391.br
392fate soldi e condivideteli con me
393.br
394perdete soldi e non venite a chiederli a me.
395.PP
396Pagina di manuale messa in piedi da Tony Nugent
397.br
398<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
399.br
400Piccole modifiche di Bram Moolenaar.
401Modificato da Juergen Weigert.
402.PP