Provided by: xxd_9.1.0496-1ubuntu6_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.