XXD(1)

NAMN
xxd - gör en hexdump eller gör det omvända.

SYNOPSIS
xxd -h[elp]
xxd [flaggor] [infil [utfil]]
xxd -r[evert] [flaggor] [infil [utfil]]

BESKRIVNING
xxd skapar en hexdump av en given fil eller standardinmatning. Det kan också konvertera en hexdump tillbaka till sin ursprungliga binära form. Liksom uuencode(1) och uudecode(1) tillåter det överföring av binär data i en "mail-safe" ASCII-representation, men har fördelen att avkoda till standardutmatning. Dessutom kan det användas för att utföra binär filpatchning.

FLAGGOR
Om ingen infile anges, läses standardinmatningen. Om infile anges som ett `-'-tecken, hämtas inmatningen från standardinmatningen. Om ingen outfile anges (eller om ett `-'-tecken finns på dess plats), skickas resultaten till standardutmatningen.

Observera att en "lat" parser används som inte kontrollerar mer än den första optionsbokstaven, såvida inte optionen följs av en parameter. Mellanslag mellan en enskild optionsbokstav och dess parameter är valfria. Parametrar till optioner kan anges i decimal-, hexadecimal- eller oktalnotation. Således är -c8, -c 8, -c 010 och -cols 8 alla likvärdiga.

-a | -autoskip
    Växla autoskip: En enda '*' ersätter NUL-rader. Standardinställning är av.

-b | -bits
    Växla till bitdump (binära siffror) istället för hexdump. Den här flaggan skriver oktetter som åtta siffror "1" och "0" istället för en vanlig hexadecimal dump. Varje rad föregås av ett radnummer i hexadecimal och följs av en ASCII- (eller EBCDIC-) representation. Kommandoradsväxeln -p fungerar inte i det här läget. Kan kombineras med -i.

-c cols | -cols kolumner
    Format <cols> oktetter per rad. Standard 16 (-i: 12, -ps: 30, -b: 6). Max 256. Inget maximum för -ps. Med -ps resulterar 0 i en lång rad med utdata.

-C | -capitalize
    Använd versaler för variabelnamn i C-inkluderingsfilformat när du använder -i.

-d  visa offset i decimal istället för hex.

-E | -EBCDIC
    Ändra teckenkodningen i den högra kolumnen från ASCII till EBCDIC. Detta ändrar inte den hexadecimala representationen. Flaggan är meningslös i kombination med -r, -p eller -i.

-e  Byt till little-endian hex dump. Denna flagga behandlar byte-grupper som ord i little-endian byte-ordning. Standardgrupperingen på 4 byte kan ändras med -g. Denna flagga gäller endast hex dump, ASCII- (eller EBCDIC-) representationen förblir oförändrad. Kommandoradsväxlarna -r, -p, -i fungerar inte i detta läge.

-g bytes | -groupsize byte
    Separera utdata för varje <bytes> -byte (två hexadecimala tecken eller åtta bitars siffror vardera) med ett blanksteg. Ange -g 0 för att undertrycka gruppering. <Bytes> -standardvärdet är 2 i normalt läge, 4 i little-endian-läge och 1 i bits-läge. Gruppering gäller inte för PostScript eller inkluderingsstil.

-h | -help
    Skriv ut en sammanfattning av tillgängliga kommandon och avsluta. Ingen hexdumpning utförs.

-i | -include
    Utdata i C-inkluderingsfilformat. En komplett statisk arraydefinition skrivs (uppkallad efter inmatningsfilen), såvida inte xxd läser från stdin. Kan kombineras med -b.

-l len | -len len
    Stanna efter att ha skrivit <len> oktetter.

-n name  |  -name namn
    Åsidosätt variabelnamnets utdata när -i används. Arrayen heter name och längden heter name_len.

-o offset
    Lägg till <offset> till den visade filpositionen.

-p | -ps | -postscript | -plain
    Utdata i PostScript-format med kontinuerlig hexdump. Kallas även vanlig hexdump.

-r | -revert
    Omvänd operation: konvertera (eller patcha) hexdump till binär. Om xxd inte skriver till stdout, skriver det till sin utdatafil utan att trunka den. Använd kombinationen -r -p för att läsa vanliga hexadecimala dumpningar utan radnummerinformation och utan en särskild kolumnlayout. Extra blanksteg och radbrytningar är tillåtna var som helst. Använd kombinationen -r -b för att läsa en bitdump istället för en hexdump.

-R when
    I utdata färgas både hexvärdet och värdet med samma färg beroende på hexvärdet. Detta hjälper främst till att skilja mellan utskrivbara och icke-utskrivbara tecken. when är never, always eller auto (standard: auto). När miljövariabeln $NO_COLOR är inställd inaktiveras färgläggningen.

-seek offset
    När det används efter -r: återställ med <offset> läggs till i filpositioner som hittas i hexdump.

-s [+][-]seek
    Börja vid <seek> byte absolut (eller relativ) infile offset. + anger att sökningen är relativ till den aktuella stdin-filpositionen (meningslöst när man inte läser från stdin). - anger att sökningen ska ske så många tecken från slutet av inmatningen (eller om det kombineras med +: före den aktuella stdin-filpositionen). Utan flaggan -s börjar xxd vid den aktuella filpositionen.

-u  Använd versaler för hexadecimala bokstäver. Standard är gemener.

-v | -version
    Visa versionssträng.

VARNINGAR

xxd -r finns en inbyggd funktion som utvärderar radnummerinformation. Om utdatafilen är sökbar kan radnumren i början av varje hexdump-rad vara i fel ordning, rader kan saknas eller överlappa varandra. I dessa fall kommer xxd att lseek(2) till nästa position. Om utdatafilen inte är sökbar är endast luckor tillåtna, vilka kommer att fyllas med nolltecken.

xxd -r genereras aldrig parsningsfel. Skräp ignoreras tyst.

När du redigerar hexdumps, observera att xxd -r hoppar över allt på inmatningsraden efter att ha läst tillräckligt många kolumner med hexadecimal data (se flaggan -c). Detta innebär också att ändringar i de utskrivbara ASCII- (eller EBCDIC-) kolumnerna alltid ignoreras. Återställning av en vanlig (eller PostScript) hexdump med xxd -r -p är inte beroende av rätt antal kolumner. Här tolkas allt som ser ut som ett par hexadecimala siffror.

Observera skillnaden mellan
% xxd -i fil
och
% xxd -i < fil

xxd -s +seek kan skilja sig från xxd -s seek, eftersom lseek(2) används för att "spola tillbaka" indata. Ett '+' gör skillnad om indatakällan är stdin och om stdins filposition inte är i början av filen när xxd startas och får sin indata. Följande exempel kan hjälpa till att förtydliga (eller förvirra ytterligare!):

Spola tillbaka stdin innan läsning; nödvändigt eftersom `cat' redan har läst till slutet av stdin.
% sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file

Hexdump från filposition 0x480 (=1024+128) och framåt. Tecknet "+" betyder "relativt till aktuell position", så "128" läggs till 1k där dd slutade.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" < file

Hexdump från filposition 0x100 (=1024-768) och framåt.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" < file

Detta är dock en sällsynt situation och användningen av `+' behövs sällan. Författaren föredrar att övervaka effekten av xxd med strace(1) eller truss(1) när -s används.

EXEMPEL

Skriv ut allt utom de tre första raderna (hex 0x30 byte) av file.
% xxd -s 0x30 fil

Skriv ut 3 rader (hex 0x30 byte) från slutet av file.
% xxd -s -0x30 fil

Observera: Resultaten i exemplen nedan är relevanta för xxd.1-man-sidan från maj 2024

Skriv ut 120 byte som en kontinuerlig hexdump med 20 oktetter per rad.
% xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d6179203230323422
20224d616e75616c207061676520666f72207878
64220a2e5c220a2e5c222032317374204d617920
313939360a2e5c22204d616e2070616765206175
74686f723a0a2e5c2220202020546f6e79204e75
67656e74203c746f6e79407363746e7567656e2e

Hexdump de första 120 byte av denna man-sida med 12 oktetter per rad.
% xxd -l 120 -c 12 xxd.1
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
00000018: 6e75 616c 2070 6167 6520 666f manuell sida för
00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\"..
00000030: 5c22 2032 3173 7420 4d61 7920 \" 21 maj
0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\" Man
00000048: 2070 6167 6520 6175 7468 6f72 sidans författare
00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\" Ton
00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <till
0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.

Visa endast datumet från filen xxd.1
% xxd -s 0x33 -l 13 -c 13 xxd.1
00000033: 3231 7374 204d 6179 2031 3939 36 21 maj 1996

Kopiera input_file till output_file och lägg till 100 byte med värdet 0x00 i början.
% xxd input_file | xxd -r -s 100 > output_file

Korrigera datumet i filen xxd.1
% echo "0000034: 3574 68" | xxd -r - xxd.1
% xxd -s 0x33 -l 13 -c 13 xxd.1
00000033: 3235 7468 204d 6179 2031 3939 36 25 maj 1996

Skapa en fil på 65537 byte med alla byte 0x00, förutom den sista som är 'A' (hex 0x41).
% echo "010000: 41" | xxd -r > fil

Hexdump denna fil med autoskip.
% xxd -a -c 12 fil
00000000: 0000 0000 0000 0000 0000 0000 ............
*
0000fffc: 0000 0000 41 ....A

Skapa en 1 byte-fil som innehåller ett enda 'A'-tecken. Siffran efter '-r -s' läggs till radnumren i filen; i praktiken undertrycks de inledande bytena.
% echo "010000: 41" | xxd -r -s -0x10000 > fil

Använd xxd som filter i en redigerare som vim(1) för att hexdumpning av ett område markerat mellan `a' och `z'.
:'a,'z!xxd

Använd xxd som filter i en redigerare som vim(1) för att återställa en binär hexdump markerad mellan `a' och `z'.
:'a,'z!xxd -r

Använd xxd som filter i en redigerare som vim(1) för att återställa en rad i en hexdump. Flytta markören över raden och skriv:
!!xxd -r

Läs enskilda tecken från en seriell linje
% xxd -c1 < /dev/term/b &amp;
% stty < /dev/term/b -echo -opost -isig -icanon min 1
% echo -n foo > /dev/term/b

RETURVÄRDEN
Följande felvärden returneras:

0   inga fel upptäcktes.

-1  operationen stöds inte (xxd -r -i fortfarande omöjligt).

1   fel vid tolkning av flaggor.

2   problem med inmatningsfilen.

3   problem med utdatafilen.

4,5 önskad sökposition är ouppnåelig.

SE ÄVEN
uuencode(1), uudecode(1), patch(1)

VARNINGAR
Verktygets konstighet matchar dess skapares hjärna. Använd helt på egen risk. Kopiera filer. Spåra dem. Bli en trollkarl.

VERSION
Denna manual sida dokumenterar xxd version 1.7 från 2024-05.

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

Distribuera fritt och ange mig som källa,
tjäna pengar och dela med mig,
förlora pengar och fråga inte mig.

Manualsida skapad av Tony Nugent
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
Små ändringar av Bram Moolenaar. Redigerat av Juergen Weigert.

SVENSK ÖVERSÄTTNING
Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. Om du hittar fel i översättningen, kontakta <tp-sv@listor.tp-sv.se>.