| XXD(1) | General Commands Manual | XXD(1) |
نام (NAME)
xxd - ساخت دامپ هگزادسیمال یا معکوس کردن آن
خلاصه دستور (SYNOPSIS)
xxd -h[elp]
xxd
[گزینهها]
[infile [outfile]]
xxd -r[evert]
[گزینهها]
[infile [outfile]]
توضیحات (DESCRIPTION)
دستور xxd یک دامپ هگزادسیمال (hex dump) از یک فایل مشخص یا از ورودی استاندارد ایجاد میکند. همچنین میتواند یک دامپ هگزادسیمال را به شکل باینری اصلی خود بازگرداند. مشابه uuencode(1) و uudecode(1) امکان انتقال دادههای باینری را در یک نمایش اسکی ایمن برای نامهنگاری فراهم میسازد، اما این مزیت را دارد که مستقیماً به خروجی استاندارد رمزگشایی کند. علاوه بر این، میتوان از آن برای وصلهزدن (patching) فایلهای باینری استفاده نمود.
گزینهها (OPTIONS)
اگر هیچ infile مشخص نشود، ورودی استاندارد خوانده میشود. اگر infile بهصورت نویسه `-' مشخص شود، ورودی از ورودی استاندارد خوانده خواهد شد. اگر هیچ outfile مشخص نشود (یا نویسه `-' به جای آن قرار گیرد)، نتایج به خروجی استاندارد فرستاده میشوند.
توجه داشته باشید که از یک تجزیهکننده «تنبل» استفاده میشود که فراتر از اولین حرف گزینه را بررسی نمیکند، مگر اینکه گزینه با یک پارامتر دنبال شود. فاصلههای بین یک تکحرف گزینه و پارامتر آن اختیاری هستند. پارامترهای گزینهها را میتوان در قالب دهدهی، هگزادسیمال یا هشتهشتی (octal) مشخص کرد. بنابراین -c8، -c 8، -c 010 و -cols 8 همگی معادل یکدیگرند.
- -a | -autoskip
- تغییر وضعیت پرش خودکار (autoskip): یک نویسه '*' تکی جایگزین خطوط NUL میشود. بهطور پیشفرض غیرفعال است.
- -b | -bits
- تغییر حالت به دامپ بیتی (ارقام دودویی)، بهجای دامپ هگزادسیمال. این گزینه بایتها را بهجای یک دامپ هگزادسیمال معمولی، بهصورت هشت رقم "1" و "0" مینویسد. هر خط با یک شماره خط در مبنای شانزده شروع شده و با یک نمایش اسکی (یا EBCDIC) دنبال میشود. سوییچ خط فرمان -p با این حالت کار نمیکند. میتواند با -i ترکیب شود.
- -c cols | -cols cols
- قالببندی به تعداد <cols> بایت در هر خط. پیشفرض 16 است (برای -i: برابر 12، برای -ps: برابر 30، برای -b: برابر 6). حداکثر 256. برای -ps حداکثری وجود ندارد. با -ps، مقدار 0 منجر به تولید یک خط طولانی در خروجی میشود.
- -C | -capitalize
- بزرگنویسی (Capitalize) نام متغیرها در سبک فایل هدر C، هنگام استفاده از -i.
- -d
- نمایش آفست در مبنای دهدهی به جای هگزادسیمال.
- -E | -EBCDIC
- تغییر رمزگذاری نویسهها در ستون سمت راست از ASCII به EBCDIC. این گزینه نمایش هگزادسیمال را تغییر نمیدهد. این گزینه در ترکیب با -r، -p یا -i بیمعنی است.
- -e
- تغییر به دامپ هگزادسیمال با ترتیب بایت اندیان کوچک (little-endian). این گزینه با گروههای بایت به عنوان کلمات در ترتیب بایت little-endian رفتار میکند. گروهبندی پیشفرض ۴ بایتی را میتوان با استفاده از -g تغییر داد. این گزینه فقط برای دامپ هگزادسیمال اعمال میشود و نمایش ASCII (یا EBCDIC) را دستنخورده باقی میگذارد. سوییچهای خط فرمان -r، -p و -i با این حالت کار نمیکنند.
- -g bytes | -groupsize bytes
- جدا کردن خروجی هر <bytes> بایت (هر کدام دو نویسه هگزادسیمال یا هشت رقم بیت) با یک فاصله خالی (whitespace). برای جلوگیری از گروهبندی، مقدار -g 0 را مشخص کنید. پیشفرض <bytes> در حالت عادی برابر 2، در حالت little-endian برابر 4 و در حالت بیتی برابر 1 است. گروهبندی در سبک PostScript یا سبک فایل هدر C اعمال نمیشود.
- -h | -help
- چاپ خلاصهای از دستورات موجود و خروج. هیچ دامپ هگزادسیمالی انجام نمیشود.
- -i | -include
- خروجی در سبک فایل هدر C (include file). یک تعریف کامل از آرایه ایستا (static array) نوشته میشود (که بر اساس فایل ورودی نامگذاری میشود)، مگر اینکه xxd از stdin بخواند. میتواند با -b ترکیب شود.
- -l len | -len len
- توقف پس از نوشتن <len> بایت.
- -n name | -name name
- بازنویسی نام متغیر در خروجی هنگامی که -i استفاده میشود. آرایه به نام name و متغیر طول به نام name_len نامگذاری میشود.
- -o offset
- افزودن <offset> به موقعیت نمایشدادهشده در فایل.
- -p | -ps | -postscript | -plain
- خروجی در سبک دامپ هگزادسیمال پیوسته PostScript. همچنین به عنوان سبک دامپ هگز خام (plain hex dump) نیز شناخته میشود.
- -r | -revert
- عملیات معکوس: تبدیل (یا وصلهزدن) دامپ هگزادسیمال به باینری. اگر خروجی به stdout هدایت نشود، xxd در فایل خروجی خود بدون کوتاه کردن (truncate) آن مینویسد. از ترکیب -r -p برای خواندن دامپهای هگزادسیمال ساده بدون اطلاعات شماره خط و بدون چیدمان ستونی خاص استفاده کنید. فاصلههای سفید اضافی و شکستهای خط در هر جایی مجاز هستند. از ترکیب -r -b برای خواندن یک دامپ بیتی به جای دامپ هگزادسیمال استفاده کنید.
- -R when
- در خروجی، هم ستون داده (هگز، یا بیتها با -b) و هم ستون نویسهها بسته به مقدار بایت با همان رنگ، رنگآمیزی میشوند. این ویژگی عمدتاً به تمایز نویسههای قابل چاپ و غیرقابل چاپ کمک میکند. when میتواند یکی از مقادیر never، always یا auto باشد (پیشفرض: auto). هنگامی که متغیر محیطی $NO_COLOR تنظیم شده باشد، رنگآمیزی غیرفعال خواهد شد.
- -seek offset
- هنگامی که پس از -r استفاده شود: معکوسسازی با افزودن <offset> به موقعیتهای فایل یافتشده در دامپ هگزادسیمال انجام میشود.
- -s [+][-]seek
- شروع از آفست <seek> بایت مطلق (یا نسبی) در فایل ورودی. علامت + نشان میدهد که جستجو (seek) نسبت به موقعیت فعلی فایل در ورودی استاندارد (stdin) است (هنگامی که از stdin خوانده نمیشود بیمعنی خواهد بود). علامت - نشان میدهد که جستجو باید به اندازه آن تعداد نویسه از انتهای ورودی باشد (یا در صورت ترکیب با +: قبل از موقعیت فعلی فایل در stdin). بدون گزینه -s، دستور xxd از موقعیت فعلی فایل آغاز میکند.
- -t
- هنگام خروجی در سبک فایل هدر C با استفاده از -i، بایت صفر پایانی (terminating zero) نیز اضافه شود.
- -u
- استفاده از حروف بزرگ برای ارقام هگزادسیمال. پیشفرض حروف کوچک است.
- -v | -version
- نمایش رشته نسخه.
خطاها (CAVEATS)
دستور 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) رصد کند.
مثالها (EXAMPLES)
چاپ
همهچیز به
جز سه خط اول
(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;
مقادیر بازگشتی (RETURN VALUES)
کدهای خطای زیر بازگردانده میشوند:
- 0
- هیچ خطایی رخ نداده است.
- -1
- عملیات پشتیبانی نمیشود (xxd -r -i همچنان غیرممکن است).
- 1
- خطا در هنگام تجزیه گزینهها.
- 2
- مشکل در فایل ورودی.
- 3
- مشکل در فایل خروجی.
- 4,5
- موقعیت جستجوی (seek) مورد نظر در دسترس نیست.
همچنین ببینید (SEE ALSO)
uuencode(1), uudecode(1), patch(1)
هشدارها (WARNINGS)
عجیب بودن این ابزار با مغز سازندهاش برابری میکند. استفاده کاملاً با مسئولیت خودتان است. از فایلها رونوشت بگیرید. آن را ردگیری کنید. به یک جادوگر تبدیل شوید.
نسخه (VERSION)
این صفحه راهنما نسخه 1.7 ابزار xxd از تاریخ 2024-05 را مستند میکند.
نویسندگان (AUTHORS)
(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 |