summaryrefslogtreecommitdiff
path: root/mnv/runtime/doc/xxd-it.UTF-8.1
blob: 124be7dd31bebe85e1f7a640fc1fa79de96d1cb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
.TH XXD 1 "Mar 2026" "Pagina di manuale per xxd"
.\"
.\" 21st May 1996
.\" Man page author:
.\"    Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.\"    Changes by Bram Moolenaar <Bram@mnv.org>
.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 tutte 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 un'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). L'opzione \-p, specificabile
dalla riga comando, non funziona in questo modo. Può essere combinata
con l'opzione \-i.
.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
.I \-d
Mostra spostamenti usando numeri decimali invece che esadecimali.
.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' scritto in C.  Viene preparata la definizione
completa del vettore (col nome del file di input), tranne quando xxd legge
dallo `standard input'. Può essere combinata con l'opzione \-b.
.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 un 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 dappertutto [e vengono ignorati]. Usare la combinazione
.I \-r \-b
per leggere un dump binario, invece che un dump esadecimale.
.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 quelli non stampabili.
.I quando
può assumere i valori
.BR never ", " always ", o " auto " (default: auto).
Quando la variabile d'ambiente
.BR $NO_COLOR
è impostata, la colorazione viene disabilitata.
.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 \-t
Quando l'output è nello stile delle `include' di C (opzione \-i ) aggiungere uno zero binario a fine stringa.
.TP
.I \-u
Usare lettere esadecimali maiuscole. Per default si usano lettere minuscole.
.TP
.IR \-v " | " \-version
Visualizzare 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\fR
.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\fR
.PP
Nota: I risultati degli esempi seguenti sono riferiti alla versione di
Marzo 2026 della pagina di manuale [quella che state leggendo].
.PP
.br
Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
.br
\fI% xxd \-l 120 \-ps \-c 20 xxd-it.UTF-8.1\fR
.br
2e544820585844203120224d6172203230323622
.br
2022506167696e61206469206d616e75616c6520
.br
70657220787864220a2e5c220a2e5c2220323173
.br
74204d617920313939360a2e5c22204d616e2070
.br
61676520617574686f723a0a2e5c222020202054
.br
6f6e79204e7567656e74203c746f6e7940736374
.br

.br
Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
.br
\fI% xxd \-l 120 \-c 12 xxd-it.UTF-8.1\fR
.br
00000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
.br
0000000c: 6172 2032 3032 3622 2022 5061  ar 2026" "Pa
.br
00000018: 6769 6e61 2064 6920 6d61 6e75  gina di manu
.br
00000024: 616c 6520 7065 7220 7878 6422  ale per xxd"
.br
00000030: 0a2e 5c22 0a2e 5c22 2032 3173  ..\\"..\\" 21s
.br
0000003c: 7420 4d61 7920 3139 3936 0a2e  t May 1996..
.br
00000048: 5c22 204d 616e 2070 6167 6520  \\" Man page 
.br
00000054: 6175 7468 6f72 3a0a 2e5c 2220  author:..\\" 
.br
00000060: 2020 2054 6f6e 7920 4e75 6765     Tony Nuge
.br
0000006c: 6e74 203c 746f 6e79 4073 6374  nt <tony@sct
.PP
.br
Visualizza la data della prima versione di questa pagina dal file xxd-it.UTF-8.1
.br
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
.br
00000039: 3231 7374 204d 6179 2031 3939 36  21st May 1996
.PP
.br
Copia
.B input_file
su
.B output_file
premettendogli 100 byte a 0x00.
.br
\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR
.br

.br
Modifica (patch) la data nel file xxd-it.UTF-8.1
.br
\fI% echo "0000039: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
.br
\fI% xxd \-s 0x39 \-l 13 \-c 13 xxd-it.UTF-8.1\fR
.br
00000039: 3331 7374 204d 6179 2031 3939 36  31st May 1996
.PP
.br
Crea 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 un'immagine esadecimale del file di cui sopra con opzione autoskip.
.br
\fI% xxd \-a \-c 12 file\fR
.br
00000000: 0000 0000 0000 0000 0000 0000  ............
.br
*
.br
0000fffc: 0000 0000 41                   ....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 mnv(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 mnv(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 mnv(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
Output nello stile delle `include' di C (opzione \-i ) con uno zero binario a fine stringa
.br
\fI% echo -n \&"0123456789\&" > cifre\fR
.br
\fI% xxd -i -t cifre\fR
.br
unsigned char cifre[] = {
.br
  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
.br
};
.br
unsigned int cifre_len = 10;
.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 del maggio 2024.
.SH AUTORE
.br
(c) 1990-1997 Juergen Weigert
.br
<jnweiger@informatik.uni\-erlangen.de>
.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
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
.br
Piccole modifiche di Bram Moolenaar.
Modificato da Juergen Weigert.
.PP