← man/data_processing
xxd — man xxd — 80×24
ugur@toprak:~/man/data_processing$man xxd
Bölüm 1 Veri İşleme

xxd

make a hex dump or do the reverse.

Synopsis

        xxd -h[elp]
        xxd [seçenekler] [girdi_dosyası [çıktı_dosyası]]
        xxd -r[evert] [seçenekler] [girdi_dosyası [çıktı_dosyası]]

Description

xxd, verilen bir dosyanın veya standart girdinin onaltılık dökümünü (hex dump) oluşturur. Ayrıca bir onaltılık dökümü tekrar orijinal ikili (binary) formuna dönüştürebilir. uuencode(1) ve uudecode(1) araçlarında olduğu gibi, ikili verilerin "posta-güvenli" (mail-safe) bir ASCII gösteriminde iletilmesini sağlar, ancak standart çıktıya kod çözme avantajına da sahiptir. Dahası, ikili dosya yamama (patching) işlemlerini gerçekleştirmek için kullanılabilir.

Options

Eğer girdi_dosyası belirtilmemişse, standart girdi okunur. girdi_dosyası '-' karakteri olarak belirtilirse, girdi standart girdiden alınır. Eğer çıktı_dosyası belirtilmemişse (veya yerine '-' karakteri konulmuşsa), sonuçlar standart çıktıya gönderilir.

Seçenek arkasından bir parametre gelmedikçe, yalnızca ilk seçenek harfini kontrol eden "tembel" (lazy) bir ayrıştırıcının kullanıldığını unutmayın. Tek bir seçenek harfi ile parametresi arasındaki boşluklar isteğe bağlıdır. Seçeneklere ait parametreler ondalık (decimal), onaltılık (hexadecimal) veya sekizlik (octal) tabanda belirtilebilir. Bu nedenle -c8, -c 8, -c 010 ve -cols 8 seçeneklerinin tümü birbirine eşdeğerdir.

-a | -autoskip Otomatik atlamayı (autoskip) açar/kapatır: Tek bir '*' karakteri boş (NUL) satırların yerini alır. Varsayılan olarak kapalıdır.

-b | -bits Onaltılık döküm yerine bit (ikili basamaklar) dökümüne geçer. Bu seçenek, normal bir onaltılık döküm yerine oktetleri sekiz adet "1" ve "0" basamağı olarak yazar. Her satırın önünde onaltılık tabanda bir satır numarası yer alır ve bunu bir ASCII (veya EBCDIC) gösterimi takip eder. Komut satırı seçeneği -p bu modla çalışmaz. -i seçeneği ile birleştirilebilir.

-c sütunlar | -cols sütunlar Satır başına <sütunlar> oktet formatlar. Varsayılan değer 16'dır (-i için 12, -ps için 30, -b için 6). Maksimum 256'dır. -ps için maksimum sınır yoktur. -ps ile 0 değeri, tek bir uzun çıktı satırı ile sonuçlanır.

-C | -capitalize -i seçeneği kullanılırken, C include dosyası stilindeki değişken adlarını büyük harfle başlatır.

-d Konum kaymasını (offset) onaltılık yerine ondalık tabanda gösterir.

-E | -EBCDIC Sağ sütundaki karakter kodlamasını ASCII yerine EBCDIC olarak değiştirir. Bu, onaltılık gösterimi değiştirmez. Bu seçenek -r, -p veya -i ile birlikte kullanıldığında anlamsızdır.

-e little-endian onaltılık dökümüne geçer. Bu seçenek, bayt gruplarını little-endian bayt sırasındaki kelimeler (words) olarak ele alır. Varsayılan 4 baytlık gruplama -g kullanılarak değiştirilebilir. Bu seçenek yalnızca onaltılık döküm için geçerlidir ve ASCII (veya EBCDIC) gösterimini değiştirmeden bırakır. Komut satırı seçenekleri -r, -p, -i bu modla çalışmaz.

-g bayt | -groupsize bayt Her baytın (her biri iki onaltılık karakter veya sekiz bit basamağı) çıktısını bir boşlukla ayırır. Gruplandırmayı bastırmak için -g 0 belirtin. varsayılan değeri normal modda 2, little-endian modunda 4 ve bit modunda 1'dir. Gruplama, PostScript veya include stili için geçerli değildir.

-h | -help Kullanılabilir komutların özetini yazdırır ve çıkar. Hiçbir onaltılık döküm işlemi gerçekleştirilmez.

-i | -include C include dosyası stilinde çıktı verir. xxd standart girdiden okumadığı sürece, tam bir statik dizi tanımı yazılır (girdi dosyasının adıyla adlandırılır). -b seçeneği ile birleştirilebilir.

-l uzunluk | -len uzunluk oktet yazdıktan sonra durur.

-n ad | -name ad -i kullanıldığında çıktı değişken adını geçersiz kılar. Dizi ad olarak, uzunluk ise ad_len olarak adlandırılır.

-o ofset Görüntülenen dosya konumuna değerini ekler.

-p | -ps | -postscript | -plain PostScript sürekli onaltılık döküm stilinde çıktı verir. Düz (plain) onaltılık döküm stili olarak da bilinir.

-r | -revert Tersine işlem: Onaltılık dökümü ikiliye (binary) dönüştürür (veya yamalar). Standart çıktıya yazılmıyorsa, xxd çıktı dosyasını kırpmadan (truncating) içine yazar. Satır numarası bilgisi ve belirli bir sütun düzeni olmadan düz onaltılık dökümleri okumak için -r -p kombinasyonunu kullanın. Herhangi bir yerde ek boşluklara ve satır sonlarına izin verilir. Onaltılık döküm yerine bit dökümünü okumak için -r -b kombinasyonunu kullanın.

-R ne_zaman Çıktıda hem onaltılık değer hem de karakter değeri, onaltılık değere bağlı olarak aynı renkle renklendirilir. Çoğunlukla yazdırılabilir ve yazdırılamayan karakterleri ayırt etmeye yardımcı olur. ne_zaman parametresi never (asla), always (her zaman) veya auto (otomatik) olabilir (varsayılan: auto). $NO_COLOR çevre değişkeni ayarlandığında, renklendirme devre dışı kalacaktır.

-seek ofset -r seçeneğinden sonra kullanıldığında: Onaltılık dökümde bulunan dosya konumlarına ekleyerek tersine çevirir.

-s [+][-]konum infile dosyasının mutlak (veya göreceli) bayt ofsetinden başlar. + işareti, konumlanmanın (seek) mevcut stdin dosya konumuna göre göreceli olduğunu belirtir (stdin'den okunmadığı sürece anlamsızdır). - işareti, konumlanmanın girdinin sonundan o kadar karakter geride olması gerektiğini belirtir (veya + ile birleştirilirse: mevcut stdin dosya konumundan önce). -s seçeneği olmadan xxd mevcut dosya konumundan başlar.

-u Büyük harfli onaltılık karakterler kullanır. Varsayılan küçük harflidir.

-v | -version Sürüm dizesini gösterir.

Caveats

xxd -r, satır numarası bilgilerini değerlendirirken bazı yerleşik sihirli özelliklere sahiptir. Eğer çıktı dosyası üzerinde konumlanma (seek) yapılabiliyorsa, her onaltılık döküm satırının başındaki satır numaraları sırasız olabilir, satırlar eksik olabilir veya örtüşebilir. Bu durumlarda xxd bir sonraki konuma lseek(2) yapacaktır. Çıktı dosyası üzerinde konumlanma yapılamıyorsa, yalnızca boşluklara (gaps) izin verilir ve bunlar sıfır baytları (null-bytes) ile doldurulur.

xxd -r asla ayrıştırma hatası üretmez. Çöp veriler sessizce atlanır.

Onaltılık dökümleri düzenlerken, xxd -r seçeneğinin yeterli sütunda onaltılık veri okuduktan sonra (bkz. seçenek -c) girdi satırındaki diğer her şeyi atladığını lütfen unutmayın. Bu aynı zamanda yazdırılabilir ASCII (veya EBCDIC) sütunlarındaki değişikliklerin her zaman yoksayıldığı anlamına gelir. Düz (veya PostScript) stilinde bir onaltılık dökümü xxd -r -p ile geri döndürmek doğru sütun sayısına bağlı değildir. Burada, bir çift onaltılık basamak gibi görünen her şey yorumlanır.

Aşağıdakiler arasındaki farka dikkat edin: % xxd -i dosya ve % xxd -i < dosya

xxd -s +konum seçeneği, girdiyi "geri sarmak" (rewind) için lseek(2) kullanıldığından xxd -s konum seçeneğinden farklı olabilir. Girdi kaynağı stdin ise ve xxd başlatılıp girdisi verildiğinde stdin'in dosya konumu dosyanın başında değilse bir '+' işareti fark oluşturur. Aşağıdaki örnekler durumu netleştirmeye (veya kafanızı daha da karıştırmaya!) yardımcı olabilir:

Okumadan önce stdin'i geri sarın; gereklidir çünkü cat zaten stdin'in sonuna kadar okumuştur. % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < dosya

Dosya konumu 0x480 (=1024+128) ve sonrasından itibaren onaltılık döküm. '+' işareti "mevcut konuma göre" anlamına gelir, bu nedenle '128', dd'nin bıraktığı 1k değerine eklenir. % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" < dosya

Dosya konumu 0x100 (=1024-768) ve sonrasından itibaren onaltılık döküm. % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" < dosya

Ancak bu nadir bir durumdur ve '+' kullanımı nadiren gereklidir. Yazar, -s her kullanıldığında xxd'nin etkisini strace(1) veya truss(1) ile izlemeyi tercih eder.

Examples

       Dosyanın ilk üç satırı (onaltılık 0x30 bayt) hariç her şeyini yazdırır.
       % xxd -s 0x30 dosya

       Dosyanın sonundan itibaren 3 satır (onaltılık 0x30 bayt) yazdırır.
       % xxd -s -0x30 dosya

       Not: Aşağıdaki örneklerin sonuçları Mayıs 2024 itibarıyla xxd.1 kılavuz sayfasıyla ilgilidir

       120 baytı satır başına 20 oktet olacak şekilde sürekli bir onaltılık döküm olarak yazdırır.
       % xxd -l 120 -ps -c 20 xxd.1
       2e544820585844203120224d6179203230323422
       20224d616e75616c207061676520666f72207878
       64220a2e5c220a2e5c222032317374204d617920
       313939360a2e5c22204d616e2070616765206175
       74686f723a0a2e5c2220202020546f6e79204e75
       67656e74203c746f6e79407363746e7567656e2e

       Bu kılavuz sayfasının ilk 120 baytını satır başına 12 oktet olacak şekilde onaltılık döküme tabi tutar.
       % 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	nual page fo
       00000024: 7220 7878 6422 0a2e 5c22 0a2e	r xxd"..\"..
       00000030: 5c22 2032 3173 7420 4d61 7920	\" 21st May
       0000003c: 3139 3936 0a2e 5c22 204d 616e	1996..\" Man
       00000048: 2070 6167 6520 6175 7468 6f72	 page author
       00000054: 3a0a 2e5c 2220 2020 2054 6f6e	:..\"	 Ton
       00000060: 7920 4e75 6765 6e74 203c 746f	y Nugent <to
       0000006c: 6e79 4073 6374 6e75 6765 6e2e	ny@sctnugen.

       xxd.1 dosyasından yalnızca tarihi görüntüler
       % xxd -s 0x33 -l 13 -c 13 xxd.1
       00000033: 3231 7374 204d 6179 2031 3939 36  21st May 1996

       girdi_dosyası'nı çıktı_dosyası'na kopyalar ve başına 100 baytlık 0x00 değeri ekler.
       % xxd girdi_dosyası | xxd -r -s 100 > çıktı_dosyası

       xxd.1 dosyasındaki tarihi yamalar
       % 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  25th May 1996

       Sonuncusu 'A' (hex 0x41) olan, tüm baytları 0x00 değerinde 65537 baytlık bir dosya oluşturur.
       % echo "010000: 41" | xxd -r > dosya

       Bu dosyayı otomatik atlama (autoskip) ile onaltılık döküme tabi tutar.
       % xxd -a -c 12 dosya
       00000000: 0000 0000 0000 0000 0000 0000	............
       *
       0000fffc: 0000 0000 41			....A

       Tek bir 'A' karakteri içeren 1 baytlık bir dosya oluşturur. '-r -s' sonrasındaki sayı, dosyada bulunan satır numaralarına eklenir; sonuç olarak, baştaki baytlar bastırılır.
       % echo "010000: 41" | xxd -r -s -0x10000 > dosya

       `a` ile `z` arasında işaretlenmiş bir bölgeyi onaltılık döküme dönüştürmek için vim(1) gibi bir düzenleyici içinde xxd'yi filtre olarak kullanır.
       :'a,'z!xxd

       `a` ile `z` arasında işaretlenmiş bir ikili onaltılık dökümü kurtarmak için vim(1) gibi bir düzenleyici içinde xxd'yi filtre olarak kullanır.
       :'a,'z!xxd -r

       Bir onaltılık dökümün tek bir satırını kurtarmak için vim(1) gibi bir düzenleyici içinde xxd'yi filtre olarak kullanır. İmleci satırın üzerine getirin ve şunu yazın:
       !!xxd -r

       Bir seri hattan tekli karakterleri okur
       % xxd -c1 < /dev/term/b &
       % stty < /dev/term/b -echo -opost -isig -icanon min 1
       % echo -n foo > /dev/term/b

Return Values

Aşağıdaki hata değerleri döndürülür:

0 hiçbir hatayla karşılaşılmadı.

-1 işlem desteklenmiyor (xxd -r -i hala imkansızdır).

1 seçenekler ayrıştırılırken hata oluştu.

2 girdi dosyasında problemler var.

3 çıktı dosyasında problemler var.

4,5 istenen konumlanma (seek) konumuna ulaşılamıyor.

See Also

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

Warnings

Bu aracın tuhaflığı, geliştiricisinin beyniyle eşleşmektedir. Kullanımından doğacak tüm riskler tamamen size aittir. Dosyaları kopyalayın. Takip (trace) edin. Bir sihirbaz olun.

Version

Bu kılavuz sayfası, 2024-05 tarihli xxd sürüm 1.7'yi belgelemektedir.

Author

(c) 1990-1997 Juergen Weigert tarafından yazılmıştır. jnweiger@informatik.uni-erlangen.de

Özgürce dağıtın ve bana atıfta bulunun, para kazanın ve benimle paylaşın, para kaybedin ama bana sormayın.

Kılavuz sayfası Tony Nugent tarafından başlatılmıştır. tony@sctnugen.ppp.gu.edu.au T.Nugent@sct.gu.edu.au Bram Moolenaar tarafından yapılan küçük değişiklikler. Juergen Weigert tarafından düzenlenmiştir.

xxd için kılavuz sayfası Mayıs 2024 XXD(1)