Provided by: xxd_9.1.0496-1ubuntu6.4_amd64 bug

NOME

       xxd - Produce lista esadecimale da un file binario o viceversa.

SINTASSI

       xxd -h[elp]
       xxd [opzioni] [input_file [output_file]]
       xxd -r[evert] [opzioni] [input_file [output_file]]

DESCRIZIONE

       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  uuencode(1)  e  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.

OPZIONI

       Se non si specifica un input_file il programma legge dallo `standard input'.  Se input_file è specificato
       come il carattere `-' , l'input è letto dallo `standard input'.  Se non si specifica un output_file (o si
       mette al suo posto il carattere `-' ), i risultati sono inviati allo `standard output'.

       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 -c8, -c 8, -c 010 e -cols 8 sono tutte notazioni
       equivalenti fra loro.

       -a | -autoskip
              Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off.

       -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). Le opzioni -p, -i,
              specificabili dalla riga comando, non funzionano in questo modo.

       -c colonne | -cols colonne
              In ogni riga sono formattate <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.

       -C | -capitalize
              Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa -i.

       -d     Mostra spostamenti usando numeri decimali invece che esadecimali.

       -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.

       -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  -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à.

       -g numero | -groupsize numero
              Separa  ogni  gruppo  di  <numero>  byte  in output (di due caratteri esadecimali o otto caratteri
              binari ognuno) con uno spazio bianco.  Specificando -g 0 i byte di output  non  sono  separati  da
              alcuno  spazio.   <Numero>  ha  come  valore  di default 2 in modalità normale [esadecimale], 4 in
              modalità `little-endian' e 1 in modalità binaria.  Il raggruppamento non  si  applica  agli  stili
              `PostScript' e `include'.

       -h | -help
              Stampa un sommario dei comandi disponibili ed esce.  Non viene fatto null'altro.

       -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'.

       -l numero | -len numero
              Il programma esce dopo aver scritto <numero> byte.

       -n nome  |  -name nome
              Specifica il nome del vettore in output quando si usa -i. Il vettore viene chiamato nome e la  sua
              lunghezza viene chiamata nome_len.

       -o incremento
              Aggiunge <incremento> alla posizione visualizzata dei byte del file.

       -p | -ps | -postscript | -plain
              L'output  è  nello  stile di un dump esadecimale continuo sotto postscript.  Noto anche come stile
              esadecimale semplice.

       -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  -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  -r  -b  per
              leggere un dump binario, invece che un dump esadecimale.

       -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.   quando  può assumere i valori never, always, o auto (default: auto).  Quando la
              variabile d'ambiente $NO_COLOR è impostata, la colorazione viene disabilitata.

       -seek distanza
              Usato con l'opzione -r: (ricostruzione), <distanza> viene aggiunta alla posizione nel file trovata
              nella immagine esadecimale.

       -s [+][-]seek
              Inizia a <seek> byte assoluti (o relativi) di distanza all'interno di input_file.  + indica che il
              `seek' è relativo alla posizione corrente nel file `standard input' (non significativo quando  non
              si  legge da `standard input'). - indica che il `seek' dovrebbe posizionarsi al numero specificato
              di caratteri dalla fine dell'input (o se in combinazione con + : prima  della  posizione  corrente
              nel file `standard input').  Se non si specifica l'opzione -s, xxd inizia dalla posizione corrente
              all'interno del file.

       -u     Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole.

       -v | -version
              Visualizza la stringa contenente la versione del programma.

ATTENZIONE

       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.

       xxd -r non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati.

       Nel modificare immagini esadecimali, si tenga conto che 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].

       Notare la differenza fra
       % xxd -i file
       e
       % xxd -i < file

       xxd -s +seek può comportarsi in modo diverso da 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!)...

       Riavvolge lo `standard input' prima di leggere; necessario perché `cat' ha già letto lo stesso file  fino
       alla fine dello `standard input'.
       % sh -c "cat > copia_normale; xxd -s 0 > copia_esadecimale" < file

       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.
       % sh -c "dd of=normale bs=1k count=1; xxd -s +128 > esadecimale" < file

       Immagine esadecimale dalla posizione 0x100 (=1024-768 ) del file in avanti.
       % sh -c "dd of=normale bs=1k count=1; xxd -s +-768 > esadecimale" < file

       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.

ESEMPI

       Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di file.
       % xxd -s 0x30 file

       Stampa 3 righe (0x30 byte in esadecimale) alla fine di file.
       % xxd -s -0x30 file

       Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
       % xxd -l 120 -ps -c 20 xxd.1
       2e54482058584420312022417567757374203139
       39362220224d616e75616c207061676520666f72
       20787864220a2e5c220a2e5c222032317374204d
       617920313939360a2e5c22204d616e2070616765
       20617574686f723a0a2e5c2220202020546f6e79
       204e7567656e74203c746f6e79407363746e7567

       Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga.
       % xxd -l 120 -c 12 xxd.1
       0000000: 2e54 4820 5858 4420 3120 2241  .TH XXD 1 "A
       000000c: 7567 7573 7420 3139 3936 2220  ugust 1996"
       0000018: 224d 616e 7561 6c20 7061 6765  "Manual page
       0000024: 2066 6f72 2078 7864 220a 2e5c   for xxd"..\
       0000030: 220a 2e5c 2220 3231 7374 204d  "..\" 21st M
       000003c: 6179 2031 3939 360a 2e5c 2220  ay 1996..\"
       0000048: 4d61 6e20 7061 6765 2061 7574  Man page aut
       0000054: 686f 723a 0a2e 5c22 2020 2020  hor:..\"
       0000060: 546f 6e79 204e 7567 656e 7420  Tony Nugent
       000006c: 3c74 6f6e 7940 7363 746e 7567  <tony@sctnug

       Visualizza la data dal file xxd.1
       % xxd -s 0x36 -l 13 -c 13 xxd.1
       0000036: 3231 7374 204d 6179 2031 3939 36  21st May 1996

       Copiare input_file su output_file premettendogli 100 byte a 0x00.
       % xxd input_file | xxd -r -s 100 > output_file

       Modificare (patch) la data nel file xxd.1
       % echo "0000037: 3574 68" | xxd -r - xxd.1
       % xxd -s 0x36 -l 13 -c 13 xxd.1
       0000036: 3235 7468 204d 6179 2031 3939 36  25th May 1996

       Creare un file di 65537 byte tutto a 0x00, tranne l'ultimo carattere che è una 'A' (esadecimale 0x41).
       % echo "010000: 41" | xxd -r > file

       Stampa una immagine esadecimale del file  di cui sopra con opzione autoskip.
       % xxd -a -c 12 file
       0000000: 0000 0000 0000 0000 0000 0000  ............
       *
       000fffc: 0000 0000 40                   ....A

       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.
       % echo "010000: 41" | xxd -r -s -0x10000 > file

       Usare xxd come filtro all'interno di un editor come vim(1)  per  ottenere  l'immagine  esadecimale  della
       parte di file fra i marcatori `a' e `z'.
       :'a,'z!xxd

       Usare  xxd  come  filtro all'interno di un editor come vim(1) per ricostruire un pezzo di file binario da
       un'immagine esadecimale fra i marcatori `a' e `z'.
       :'a,'z!xxd -r

       Usare xxd come filtro all'interno di un editor come vim(1) per ricostruire una sola riga di file  binario
       da un'immagine esadecimale. Portare il cursore sopra la riga e battere:
       !!xxd -r

       Leggere singoli caratteri da una linea seriale
       % xxd -c1 < /dev/term/b &
       % stty < /dev/term/b -echo -opost -isig -icanon min 1
       % echo -n foo > /dev/term/b

CODICI DI RITORNO

       Il programma può restituire questi codici di errore:

       0      nessun errore rilevato.

       -1     operazione non supportata (xxd -r -i non ancora possible).

       1      errore durante la scansione parametri.

       2      problemi con il file di input.

       3      problemi con il file di output.

       4,5    posizione `seek' specificata non raggiungibile all'interno del file.

VEDERE ANCHE

       uuencode(1), uudecode(1), patch(1)

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.

VERSIONE

       Questa pagina di manuale documenta la versione 1.7 di xxd.

AUTORE

       (c) 1990-1997 Juergen Weigert
       <jnweiger@informatik.uni-erlangen.de>

       Distribuite liberamente ed attribuitemi il credito,
       fate soldi e condivideteli con me
       perdete soldi e non venite a chiederli a me.

       Pagina di manuale iniziata da Tony Nugent
       <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
       Piccole modifiche di Bram Moolenaar.  Modificato da Juergen Weigert.