mirror of
https://github.com/vim/vim
synced 2025-03-14 22:07:51 +01:00
Signed-off-by: Christian Brabandt <cb@256bit.org> Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
419 lines
13 KiB
Groff
419 lines
13 KiB
Groff
.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd"
|
|
.\"
|
|
.\" 21 Maggio 1996
|
|
.\" Autore della pagina di manuale:
|
|
.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
|
|
.\" Modificato da Bram Moolenaar <Bram@vim.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 \-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\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
|
|
Maggio 2024 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
|
|
2e544820585844203120224d616767696f203230
|
|
.br
|
|
3234222022506167696e61206469206d616e7561
|
|
.br
|
|
6c652070657220787864220a2e5c220a2e5c2220
|
|
.br
|
|
3231204d616767696f20313939360a2e5c222041
|
|
.br
|
|
75746f72652064656c6c6120706167696e612064
|
|
.br
|
|
69206d616e75616c653a0a2e5c2220202020546f
|
|
.PP
|
|
|
|
.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: 6167 6769 6f20 3230 3234 2220 aggio 2024"
|
|
.br
|
|
00000018: 2250 6167 696e 6120 6469 206d "Pagina di m
|
|
.br
|
|
00000024: 616e 7561 6c65 2070 6572 2078 anuale per x
|
|
.br
|
|
00000030: 7864 220a 2e5c 220a 2e5c 2220 xd"..\"..\"
|
|
.br
|
|
0000003c: 3231 204d 6167 6769 6f20 3139 21 Maggio 19
|
|
.br
|
|
00000048: 3936 0a2e 5c22 2041 7574 6f72 96..\" Autor
|
|
.br
|
|
00000054: 6520 6465 6c6c 6120 7061 6769 e della pagi
|
|
.br
|
|
00000060: 6e61 2064 6920 6d61 6e75 616c na di manual
|
|
.br
|
|
0000006c: 653a 0a2e 5c22 2020 2020 546f e:..\" To
|
|
.PP
|
|
.br
|
|
Visualizza la data dal file xxd-it.UTF-8.1
|
|
.br
|
|
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
|
.br
|
|
0000003c: 3231 204d 6167 6769 6f20 3139 3936 21 Maggio 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 "000003c: 3331" | xxd \-r \- xxd-it.UTF-8.1\fR
|
|
.br
|
|
\fI% xxd \-s 0x3c \-l 14 \-c 14 xxd-it.UTF-8.1\fR
|
|
.br
|
|
0000003c: 3331 204d 6167 6769 6f20 3139 3936 31 Maggio 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 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 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
|