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