XXD(1) General Commands Manual XXD(1)

xxd - ساخت دامپ هگزادسیمال یا معکوس کردن آن

xxd -h[elp]
xxd [گزینه‌ها] [infile [outfile]]
xxd -r[evert] [گزینه‌ها] [infile [outfile]]

دستور xxd یک دامپ هگزادسیمال (hex dump) از یک فایل مشخص یا از ورودی استاندارد ایجاد می‌کند. همچنین می‌تواند یک دامپ هگزادسیمال را به شکل باینری اصلی خود بازگرداند. مشابه uuencode(1) و uudecode(1) امکان انتقال داده‌های باینری را در یک نمایش اسکی ایمن برای نامه‌نگاری فراهم می‌سازد، اما این مزیت را دارد که مستقیماً به خروجی استاندارد رمزگشایی کند. علاوه بر این، می‌توان از آن برای وصله‌زدن (patching) فایل‌های باینری استفاده نمود.

اگر هیچ infile مشخص نشود، ورودی استاندارد خوانده می‌شود. اگر infile به‌صورت نویسه `-' مشخص شود، ورودی از ورودی استاندارد خوانده خواهد شد. اگر هیچ outfile مشخص نشود (یا نویسه `-' به جای آن قرار گیرد)، نتایج به خروجی استاندارد فرستاده می‌شوند.

توجه داشته باشید که از یک تجزیه‌کننده «تنبل» استفاده می‌شود که فراتر از اولین حرف گزینه را بررسی نمی‌کند، مگر اینکه گزینه با یک پارامتر دنبال شود. فاصله‌های بین یک تک‌حرف گزینه و پارامتر آن اختیاری هستند. پارامترهای گزینه‌ها را می‌توان در قالب ده‌دهی، هگزادسیمال یا هشت‌هشتی (octal) مشخص کرد. بنابراین -c8، -c 8، -c 010 و -cols 8 همگی معادل یکدیگرند.

تغییر وضعیت پرش خودکار (autoskip): یک نویسه '*' تکی جایگزین خطوط NUL می‌شود. به‌طور پیش‌فرض غیرفعال است.
تغییر حالت به دامپ بیتی (ارقام دودویی)، به‌جای دامپ هگزادسیمال. این گزینه بایت‌ها را به‌جای یک دامپ هگزادسیمال معمولی، به‌صورت هشت رقم "1" و "0" می‌نویسد. هر خط با یک شماره خط در مبنای شانزده شروع شده و با یک نمایش اسکی (یا EBCDIC) دنبال می‌شود. سوییچ خط فرمان -p با این حالت کار نمی‌کند. می‌تواند با -i ترکیب شود.
قالب‌بندی به تعداد <cols> بایت در هر خط. پیش‌فرض 16 است (برای -i: برابر 12، برای -ps: برابر 30، برای -b: برابر 6). حداکثر 256. برای -ps حداکثری وجود ندارد. با -ps، مقدار 0 منجر به تولید یک خط طولانی در خروجی می‌شود.
بزرگ‌نویسی (Capitalize) نام متغیرها در سبک فایل هدر C، هنگام استفاده از -i.
نمایش آفست در مبنای ده‌دهی به جای هگزادسیمال.
تغییر رمزگذاری نویسه‌ها در ستون سمت راست از ASCII به EBCDIC. این گزینه نمایش هگزادسیمال را تغییر نمی‌دهد. این گزینه در ترکیب با -r، -p یا -i بی‌معنی است.
تغییر به دامپ هگزادسیمال با ترتیب بایت اندیان کوچک (little-endian). این گزینه با گروه‌های بایت به عنوان کلمات در ترتیب بایت little-endian رفتار می‌کند. گروه‌بندی پیش‌فرض ۴ بایتی را می‌توان با استفاده از -g تغییر داد. این گزینه فقط برای دامپ هگزادسیمال اعمال می‌شود و نمایش ASCII (یا EBCDIC) را دست‌نخورده باقی می‌گذارد. سوییچ‌های خط فرمان -r، -p و -i با این حالت کار نمی‌کنند.
جدا کردن خروجی هر <bytes> بایت (هر کدام دو نویسه هگزادسیمال یا هشت رقم بیت) با یک فاصله خالی (whitespace). برای جلوگیری از گروه‌بندی، مقدار -g 0 را مشخص کنید. پیش‌فرض <bytes> در حالت عادی برابر 2، در حالت little-endian برابر 4 و در حالت بیتی برابر 1 است. گروه‌بندی در سبک PostScript یا سبک فایل هدر C اعمال نمی‌شود.
چاپ خلاصه‌ای از دستورات موجود و خروج. هیچ دامپ هگزادسیمالی انجام نمی‌شود.
خروجی در سبک فایل هدر C (include file). یک تعریف کامل از آرایه ایستا (static array) نوشته می‌شود (که بر اساس فایل ورودی نام‌گذاری می‌شود)، مگر اینکه xxd از stdin بخواند. می‌تواند با -b ترکیب شود.
توقف پس از نوشتن <len> بایت.
بازنویسی نام متغیر در خروجی هنگامی که -i استفاده می‌شود. آرایه به نام name و متغیر طول به نام name_len نام‌گذاری می‌شود.
افزودن <offset> به موقعیت نمایش‌داده‌شده در فایل.
خروجی در سبک دامپ هگزادسیمال پیوسته PostScript. همچنین به عنوان سبک دامپ هگز خام (plain hex dump) نیز شناخته می‌شود.
عملیات معکوس: تبدیل (یا وصله‌زدن) دامپ هگزادسیمال به باینری. اگر خروجی به stdout هدایت نشود، xxd در فایل خروجی خود بدون کوتاه کردن (truncate) آن می‌نویسد. از ترکیب -r -p برای خواندن دامپ‌های هگزادسیمال ساده بدون اطلاعات شماره خط و بدون چیدمان ستونی خاص استفاده کنید. فاصله‌های سفید اضافی و شکست‌های خط در هر جایی مجاز هستند. از ترکیب -r -b برای خواندن یک دامپ بیتی به جای دامپ هگزادسیمال استفاده کنید.
در خروجی، هم ستون داده (هگز، یا بیت‌ها با -b) و هم ستون نویسه‌ها بسته به مقدار بایت با همان رنگ، رنگ‌آمیزی می‌شوند. این ویژگی عمدتاً به تمایز نویسه‌های قابل چاپ و غیرقابل چاپ کمک می‌کند. when می‌تواند یکی از مقادیر never، always یا auto باشد (پیش‌فرض: auto). هنگامی که متغیر محیطی $NO_COLOR تنظیم شده باشد، رنگ‌آمیزی غیرفعال خواهد شد.
هنگامی که پس از -r استفاده شود: معکوس‌سازی با افزودن <offset> به موقعیت‌های فایل یافت‌شده در دامپ هگزادسیمال انجام می‌شود.
شروع از آفست <seek> بایت مطلق (یا نسبی) در فایل ورودی. علامت + نشان می‌دهد که جستجو (seek) نسبت به موقعیت فعلی فایل در ورودی استاندارد (stdin) است (هنگامی که از stdin خوانده نمی‌شود بی‌معنی خواهد بود). علامت - نشان می‌دهد که جستجو باید به اندازه آن تعداد نویسه از انتهای ورودی باشد (یا در صورت ترکیب با +: قبل از موقعیت فعلی فایل در stdin). بدون گزینه -s، دستور xxd از موقعیت فعلی فایل آغاز می‌کند.
هنگام خروجی در سبک فایل هدر C با استفاده از -i، بایت صفر پایانی (terminating zero) نیز اضافه شود.
استفاده از حروف بزرگ برای ارقام هگزادسیمال. پیش‌فرض حروف کوچک است.
نمایش رشته نسخه.

دستور xxd -r هنگام ارزیابی اطلاعات شماره خط دارای برخی رفتارهای داخلی خاص است. اگر فایل خروجی قابل جستجو (seekable) باشد، شماره خطوط در ابتدای هر خط دامپ هگزادسیمال ممکن است نامرتب، جاافتاده یا دارای همپوشانی باشند. در این شرایط، xxd از فراخوان lseek(2) برای رفتن به موقعیت بعدی استفاده خواهد کرد. اگر فایل خروجی قابلیت جستجو نداشته باشد، فقط فاصله‌ها مجاز خواهند بود که با بایت‌های تهی (null-bytes) پر می‌شوند.

دستور xxd -r هرگز خطای تجزیه (parse error) ایجاد نمی‌کند. داده‌های نامعتبر یا زائد بدون هشدار نادیده گرفته می‌شوند.

هنگام ویرایش دامپ‌های هگزادسیمال، لطفاً توجه داشته باشید که xxd -r پس از خواندن ستون‌های کافی از داده‌های هگزادسیمال (گزینه -c را ببینید)، باقی‌مانده محتوای خط ورودی را نادیده می‌گیرد. این همچنین بدان معناست که تغییرات در ستون‌های اسکی (یا EBCDIC) قابل چاپ همیشه نادیده گرفته می‌شوند. معکوس کردن یک دامپ هگز ساده (یا PostScript) با دستور xxd -r -p به تعداد صحیح ستون‌ها وابسته نیست. در اینجا، هر چیزی که شبیه به یک جفت رقم هگزادسیمال باشد تفسیر می‌شود.

به تفاوت میان موارد زیر توجه کنید:
% xxd -i file
و
% xxd -i < file

دستور xxd -s +seek ممکن است با xxd -s seek متفاوت باشد، چرا که lseek(2) برای «به عقب بازگرداندن» ورودی استفاده می‌شود. علامت '+' زمانی تفاوت ایجاد می‌کند که منبع ورودی stdin باشد و موقعیت فایل ورودی استاندارد در لحظه شروع به کار و دریافت ورودی توسط xxd در ابتدای فایل نباشد. مثال‌های زیر ممکن است به درک بهتر این موضوع کمک کنند (یا حتی موجب سردرگمی بیشتر شوند!):

بازگردانی ورودی استاندارد (stdin) به عقب پیش از خواندن؛ این کار به این دلیل ضروری است که دستور `cat' پیش‌تر فایل را تا انتهای ورودی خوانده است.
% sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file

تهیه دامپ هگزادسیمال از موقعیت 0x480 فایل (=1024+128) به بعد. علامت `+' به معنای «نسبت به موقعیت فعلی» است، بنابراین مقدار `128' به 1k که دستور dd در آن پایان یافته بود افزوده می‌شود.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" < file

تهیه دامپ هگزادسیمال از موقعیت 0x100 فایل (=1024-768) به بعد.
% sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" < file

با این حال، این شرایط نادر است و استفاده از `+' به ندرت لازم می‌شود. نویسنده برنامه ترجیح می‌دهد هر زمان که از -s استفاده می‌شود، رفتار xxd را با strace(1) یا truss(1) رصد کند.

چاپ همه‌چیز به جز سه خط اول (0x30 بایت در مبنای هگز) از file.
% xxd -s 0x30 file

چاپ ۳ خط (0x30 بایت در مبنای هگز) از انتهای file.
% xxd -s -0x30 file

نکته: نتایج مثال‌های زیر مربوط به صفحه راهنمای xxd.1 از مارس ۲۰۲۶ است.

چاپ ۱۲۰ بایت به صورت یک دامپ هگز پیوسته با ۲۰ بایت در هر خط.
% xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d6172203230323622
20224d616e75616c207061676520666f72207878
64220a2e5c220a2e5c222032317374204d617920
313939360a2e5c22204d616e2070616765206175
74686f723a0a2e5c2220202020546f6e79204e75
67656e74203c746f6e79407363746e7567656e2e

دامپ هگزادسیمال ۱۲۰ بایت نخست این صفحه راهنما با ۱۲ بایت در هر خط.
% xxd -l 120 -c 12 xxd.1
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "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
% xxd -s 0x33 -l 13 -c 13 xxd.1
00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996

رونوشت از input_file به output_file و افزودن ۱۰۰ بایت با مقدار 0x00 به ابتدای آن.
% xxd input_file | xxd -r -s 100 > output_file

وصله‌زدن تاریخ در فایل 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 25th May 1996

ایجاد یک فایل ۶۵۵۳۷ بایتی که تمام بایت‌های آن 0x00 است، به جز آخرین بایت که نویسه 'A' (مقدار 0x41 در مبنای شانزده) است.
% echo "010000: 41" | xxd -r > file

دامپ هگزادسیمال این فایل همراه با پرش خودکار (autoskip).
% xxd -a -c 12 file
00000000: 0000 0000 0000 0000 0000 0000 ............
*
0000fffc: 0000 0000 41 ....A

ایجاد یک فایل ۱ بایتی شامل فقط یک نویسه 'A'. عدد بعد از '-r -s' به شماره خطوط موجود در فایل افزوده می‌شود؛ در عمل، بایت‌های آغازین نادیده گرفته می‌شوند.
% echo "010000: 41" | xxd -r -s -0x10000 > file

استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند vim(1) برای دامپ هگزادسیمال محدوده‌ای که بین `a' و `z' نشانه‌گذاری شده است.
:'a,'z!xxd

استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند vim(1) برای بازیابی یک دامپ باینری هگزادسیمال که بین `a' و `z' نشانه‌گذاری شده است.
:'a,'z!xxd -r

استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند vim(1) برای بازیابی یک خط از یک دامپ هگزادسیمال. مکان‌نما را روی خط ببرید و تایپ کنید:
!!xxd -r

خواندن تک‌نویسه‌ها از یک خط سریال
% xxd -c1 < /dev/term/b &
% stty < /dev/term/b -echo -opost -isig -icanon min 1
% echo -n foo > /dev/term/b

خروجی در سبک فایل هدر C همراه با بایت صفر پایانی
% echo -n "0123456789" > digits
% xxd -i -t digits
unsigned char digits[] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
};
unsigned int digits_len = 10;

کدهای خطای زیر بازگردانده می‌شوند:

0
هیچ خطایی رخ نداده است.
-1
عملیات پشتیبانی نمی‌شود (xxd -r -i همچنان غیرممکن است).
1
خطا در هنگام تجزیه گزینه‌ها.
2
مشکل در فایل ورودی.
3
مشکل در فایل خروجی.
4,5
موقعیت جستجوی (seek) مورد نظر در دسترس نیست.

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

عجیب بودن این ابزار با مغز سازنده‌اش برابری می‌کند. استفاده کاملاً با مسئولیت خودتان است. از فایل‌ها رونوشت بگیرید. آن را ردگیری کنید. به یک جادوگر تبدیل شوید.

این صفحه راهنما نسخه 1.7 ابزار xxd از تاریخ 2024-05 را مستند می‌کند.

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

آزادانه توزیع کنید و نام مرا ذکر نمایید،
کسب درآمد کنید و با من به اشتراک بگذارید،
ضرر کنید و از من مطالبه‌ای نداشته باشید.

صفحه راهنما توسط تونی نوجنت (Tony Nugent) آغاز شد
<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
تغییرات جزئی توسط برام مولنار (Bram Moolenaar). ویرایش توسط یورگن وایگرت (Juergen Weigert).

Mar 2026 Manual page for xxd