.TH XXD 1 "Mar 2026" "Manual page for xxd" .\" .\" 21st May 1996 .\" Man page author: .\" Tony Nugent .\" Changes by Bram Moolenaar .SH "نام (NAME)" xxd \- ساخت دامپ هگزادسیمال یا معکوس کردن آن .SH "خلاصه دستور (SYNOPSIS)" .B xxd \-h[elp] .br .B xxd [\fIگزینه‌ها\fR] [\fIinfile\fR [\fIoutfile\fR]] .br .B xxd \-r[evert] [\fIگزینه‌ها\fR] [\fIinfile\fR [\fIoutfile\fR]] .SH "توضیحات (DESCRIPTION)" دستور .I xxd یک دامپ هگزادسیمال (hex dump) از یک فایل مشخص یا از ورودی استاندارد ایجاد می‌کند. همچنین می‌تواند یک دامپ هگزادسیمال را به شکل باینری اصلی خود بازگرداند. مشابه .BR uuencode (1) و .BR uudecode (1) امکان انتقال داده‌های باینری را در یک نمایش اسکی ایمن برای نامه‌نگاری فراهم می‌سازد، اما این مزیت را دارد که مستقیماً به خروجی استاندارد رمزگشایی کند. علاوه بر این، می‌توان از آن برای وصله‌زدن (patching) فایل‌های باینری استفاده نمود. .SH "گزینه‌ها (OPTIONS)" اگر هیچ .I infile مشخص نشود، ورودی استاندارد خوانده می‌شود. اگر .I infile به‌صورت نویسه .RB \` \- ' مشخص شود، ورودی از ورودی استاندارد خوانده خواهد شد. اگر هیچ .I outfile مشخص نشود (یا نویسه .RB \` \- ' به جای آن قرار گیرد)، نتایج به خروجی استاندارد فرستاده می‌شوند. .PP توجه داشته باشید که از یک تجزیه‌کننده «تنبل» استفاده می‌شود که فراتر از اولین حرف گزینه را بررسی نمی‌کند، مگر اینکه گزینه با یک پارامتر دنبال شود. فاصله‌های بین یک تک‌حرف گزینه و پارامتر آن اختیاری هستند. پارامترهای گزینه‌ها را می‌توان در قالب ده‌دهی، هگزادسیمال یا هشت‌هشتی (octal) مشخص کرد. بنابراین .BR \-c8 ، .BR "\-c 8" ، .B \-c 010 و .B \-cols 8 همگی معادل یکدیگرند. .PP .TP .IR \-a " | " \-autoskip تغییر وضعیت پرش خودکار (autoskip): یک نویسه '*' تکی جایگزین خطوط NUL می‌شود. به‌طور پیش‌فرض غیرفعال است. .TP .IR \-b " | " \-bits تغییر حالت به دامپ بیتی (ارقام دودویی)، به‌جای دامپ هگزادسیمال. این گزینه بایت‌ها را به‌جای یک دامپ هگزادسیمال معمولی، به‌صورت هشت رقم "1" و "0" می‌نویسد. هر خط با یک شماره خط در مبنای شانزده شروع شده و با یک نمایش اسکی (یا EBCDIC) دنبال می‌شود. سوییچ خط فرمان .B \-p با این حالت کار نمی‌کند. می‌تواند با .B \-i ترکیب شود. .TP .IR "\-c cols " | " \-cols cols" قالب‌بندی به تعداد .RI < cols > بایت در هر خط. پیش‌فرض 16 است (برای \-i: برابر 12، برای \-ps: برابر 30، برای \-b: برابر 6). حداکثر 256. برای .B \-ps حداکثری وجود ندارد. با .BR \-ps ، مقدار 0 منجر به تولید یک خط طولانی در خروجی می‌شود. .TP .IR \-C " | " \-capitalize بزرگ‌نویسی (Capitalize) نام متغیرها در سبک فایل هدر C، هنگام استفاده از .BR \-i . .TP .I \-d نمایش آفست در مبنای ده‌دهی به جای هگزادسیمال. .TP .IR \-E " | " \-EBCDIC تغییر رمزگذاری نویسه‌ها در ستون سمت راست از ASCII به EBCDIC. این گزینه نمایش هگزادسیمال را تغییر نمی‌دهد. این گزینه در ترکیب با .BR \-r ، .B \-p یا .B \-i بی‌معنی است. .TP .IR \-e تغییر به دامپ هگزادسیمال با ترتیب بایت اندیان کوچک (little-endian). این گزینه با گروه‌های بایت به عنوان کلمات در ترتیب بایت little-endian رفتار می‌کند. گروه‌بندی پیش‌فرض ۴ بایتی را می‌توان با استفاده از .RI "" \-g تغییر داد. این گزینه فقط برای دامپ هگزادسیمال اعمال می‌شود و نمایش ASCII (یا EBCDIC) را دست‌نخورده باقی می‌گذارد. سوییچ‌های خط فرمان .BR \-r ، .B \-p و .B \-i با این حالت کار نمی‌کنند. .TP .IR "\-g bytes " | " \-groupsize bytes" جدا کردن خروجی هر .RI < bytes > بایت (هر کدام دو نویسه هگزادسیمال یا هشت رقم بیت) با یک فاصله خالی (whitespace). برای جلوگیری از گروه‌بندی، مقدار .I \-g 0 را مشخص کنید. پیش‌فرض .RI < bytes > در حالت عادی برابر 2، در حالت little-endian برابر \fI4\fP و در حالت بیتی برابر \fI1\fP است. گروه‌بندی در سبک PostScript یا سبک فایل هدر C اعمال نمی‌شود. .TP .IR \-h " | " \-help چاپ خلاصه‌ای از دستورات موجود و خروج. هیچ دامپ هگزادسیمالی انجام نمی‌شود. .TP .IR \-i " | " \-include خروجی در سبک فایل هدر C (include file). یک تعریف کامل از آرایه ایستا (static array) نوشته می‌شود (که بر اساس فایل ورودی نام‌گذاری می‌شود)، مگر اینکه xxd از stdin بخواند. می‌تواند با .B \-b ترکیب شود. .TP .IR "\-l len " | " \-len len" توقف پس از نوشتن .RI < len > بایت. .TP .I "\-n name " | " \-name name" بازنویسی نام متغیر در خروجی هنگامی که .B \-i استفاده می‌شود. آرایه به نام \fIname\fP و متغیر طول به نام \fIname\fP_len نام‌گذاری می‌شود. .TP .I \-o offset افزودن .RI < offset > به موقعیت نمایش‌داده‌شده در فایل. .TP .IR \-p " | " \-ps " | " \-postscript " | " \-plain خروجی در سبک دامپ هگزادسیمال پیوسته PostScript. همچنین به عنوان سبک دامپ هگز خام (plain hex dump) نیز شناخته می‌شود. .TP .IR \-r " | " \-revert عملیات معکوس: تبدیل (یا وصله‌زدن) دامپ هگزادسیمال به باینری. اگر خروجی به stdout هدایت نشود، xxd در فایل خروجی خود بدون کوتاه کردن (truncate) آن می‌نویسد. از ترکیب .I \-r \-p برای خواندن دامپ‌های هگزادسیمال ساده بدون اطلاعات شماره خط و بدون چیدمان ستونی خاص استفاده کنید. فاصله‌های سفید اضافی و شکست‌های خط در هر جایی مجاز هستند. از ترکیب .I \-r \-b برای خواندن یک دامپ بیتی به جای دامپ هگزادسیمال استفاده کنید. .TP .IR \-R " " when در خروجی، هم ستون داده (هگز، یا بیت‌ها با \-b) و هم ستون نویسه‌ها بسته به مقدار بایت با همان رنگ، رنگ‌آمیزی می‌شوند. این ویژگی عمدتاً به تمایز نویسه‌های قابل چاپ و غیرقابل چاپ کمک می‌کند. .I when می‌تواند یکی از مقادیر .BR never ، .B always یا .B auto باشد (پیش‌فرض: auto). هنگامی که متغیر محیطی .BR $NO_COLOR تنظیم شده باشد، رنگ‌آمیزی غیرفعال خواهد شد. .TP .I \-seek offset هنگامی که پس از .I \-r استفاده شود: معکوس‌سازی با افزودن .RI < offset > به موقعیت‌های فایل یافت‌شده در دامپ هگزادسیمال انجام می‌شود. .TP .I \-s [+][\-]seek شروع از آفست .RI < seek > بایت مطلق (یا نسبی) در فایل ورودی. علامت \fI+ \fRنشان می‌دهد که جستجو (seek) نسبت به موقعیت فعلی فایل در ورودی استاندارد (stdin) است (هنگامی که از stdin خوانده نمی‌شود بی‌معنی خواهد بود). علامت \fI\- \fRنشان می‌دهد که جستجو باید به اندازه آن تعداد نویسه از انتهای ورودی باشد (یا در صورت ترکیب با \fI+\fR: قبل از موقعیت فعلی فایل در stdin). بدون گزینه .BR \-s ، دستور xxd از موقعیت فعلی فایل آغاز می‌کند. .TP .I \-t هنگام خروجی در سبک فایل هدر C با استفاده از .BR \-i ، بایت صفر پایانی (terminating zero) نیز اضافه شود. .TP .I \-u استفاده از حروف بزرگ برای ارقام هگزادسیمال. پیش‌فرض حروف کوچک است. .TP .IR \-v " | " \-version نمایش رشته نسخه. .SH "خطاها (CAVEATS)" .PP دستور .I xxd \-r هنگام ارزیابی اطلاعات شماره خط دارای برخی رفتارهای داخلی خاص است. اگر فایل خروجی قابل جستجو (seekable) باشد، شماره خطوط در ابتدای هر خط دامپ هگزادسیمال ممکن است نامرتب، جاافتاده یا دارای همپوشانی باشند. در این شرایط، xxd از فراخوان .BR lseek (2) برای رفتن به موقعیت بعدی استفاده خواهد کرد. اگر فایل خروجی قابلیت جستجو نداشته باشد، فقط فاصله‌ها مجاز خواهند بود که با بایت‌های تهی (null-bytes) پر می‌شوند. .PP دستور .I xxd \-r هرگز خطای تجزیه (parse error) ایجاد نمی‌کند. داده‌های نامعتبر یا زائد بدون هشدار نادیده گرفته می‌شوند. .PP هنگام ویرایش دامپ‌های هگزادسیمال، لطفاً توجه داشته باشید که .I xxd \-r پس از خواندن ستون‌های کافی از داده‌های هگزادسیمال (گزینه .B \-c را ببینید)، باقی‌مانده محتوای خط ورودی را نادیده می‌گیرد. این همچنین بدان معناست که تغییرات در ستون‌های اسکی (یا EBCDIC) قابل چاپ همیشه نادیده گرفته می‌شوند. معکوس کردن یک دامپ هگز ساده (یا PostScript) با دستور .B xxd \-r \-p به تعداد صحیح ستون‌ها وابسته نیست. در اینجا، هر چیزی که شبیه به یک جفت رقم هگزادسیمال باشد تفسیر می‌شود. .PP به تفاوت میان موارد زیر توجه کنید: .br \fI% xxd \-i file\fR .br و .br \fI% xxd \-i < file\fR .PP دستور .I xxd \-s +seek ممکن است با .I xxd \-s seek متفاوت باشد، چرا که .BR lseek (2) برای «به عقب بازگرداندن» ورودی استفاده می‌شود. علامت '+' زمانی تفاوت ایجاد می‌کند که منبع ورودی stdin باشد و موقعیت فایل ورودی استاندارد در لحظه شروع به کار و دریافت ورودی توسط xxd در ابتدای فایل نباشد. مثال‌های زیر ممکن است به درک بهتر این موضوع کمک کنند (یا حتی موجب سردرگمی بیشتر شوند!): .PP بازگردانی ورودی استاندارد (stdin) به عقب پیش از خواندن؛ این کار به این دلیل ضروری است که دستور `cat' پیش‌تر فایل را تا انتهای ورودی خوانده است. .br \fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR .PP تهیه دامپ هگزادسیمال از موقعیت 0x480 فایل (=1024+128) به بعد. علامت `+' به معنای «نسبت به موقعیت فعلی» است، بنابراین مقدار `128' به 1k که دستور dd در آن پایان یافته بود افزوده می‌شود. .br \fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR .PP تهیه دامپ هگزادسیمال از موقعیت 0x100 فایل (=1024\-768) به بعد. .br \fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR .PP با این حال، این شرایط نادر است و استفاده از `+' به ندرت لازم می‌شود. نویسنده برنامه ترجیح می‌دهد هر زمان که از .B \-s استفاده می‌شود، رفتار xxd را با .BR strace (1) یا .BR truss (1) رصد کند. .SH "مثال‌ها (EXAMPLES)" .PP .br چاپ همه‌چیز به جز سه خط اول (0x30 بایت در مبنای هگز) از .BR file . .br \fI% xxd \-s 0x30 file\fR .PP .br چاپ ۳ خط (0x30 بایت در مبنای هگز) از انتهای .BR file . .br \fI% xxd \-s \-0x30 file\fR .PP نکته: نتایج مثال‌های زیر مربوط به صفحه راهنمای xxd.1 از مارس ۲۰۲۶ است. .PP .br چاپ ۱۲۰ بایت به صورت یک دامپ هگز پیوسته با ۲۰ بایت در هر خط. .br \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR .br 2e544820585844203120224d6172203230323622 .br 20224d616e75616c207061676520666f72207878 .br 64220a2e5c220a2e5c222032317374204d617920 .br 313939360a2e5c22204d616e2070616765206175 .br 74686f723a0a2e5c2220202020546f6e79204e75 .br 67656e74203c746f6e79407363746e7567656e2e .br .br دامپ هگزادسیمال ۱۲۰ بایت نخست این صفحه راهنما با ۱۲ بایت در هر خط. .br \fI% xxd \-l 120 \-c 12 xxd.1\fR .br 00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M .br 0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma .br 00000018: 6e75 616c 2070 6167 6520 666f nual page fo .br 00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\".. .br 00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May .br 0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man .br 00000048: 2070 6167 6520 6175 7468 6f72 page author .br 00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton .br 00000060: 7920 4e75 6765 6e74 203c 746f y Nugent output_file\fR .br .br وصله‌زدن تاریخ در فایل xxd.1 .br \fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fR .br \fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR .br 00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996 .PP .br ایجاد یک فایل ۶۵۵۳۷ بایتی که تمام بایت‌های آن 0x00 است، به جز آخرین بایت که نویسه 'A' (مقدار 0x41 در مبنای شانزده) است. .br \fI% echo "010000: 41" | xxd \-r > file\fR .PP .br دامپ هگزادسیمال این فایل همراه با پرش خودکار (autoskip). .br \fI% xxd \-a \-c 12 file\fR .br 00000000: 0000 0000 0000 0000 0000 0000 ............ .br * .br 0000fffc: 0000 0000 41 ....A .PP ایجاد یک فایل ۱ بایتی شامل فقط یک نویسه 'A'. عدد بعد از '\-r \-s' به شماره خطوط موجود در فایل افزوده می‌شود؛ در عمل، بایت‌های آغازین نادیده گرفته می‌شوند. .br \fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR .PP استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند .B vim(1) برای دامپ هگزادسیمال محدوده‌ای که بین `a' و `z' نشانه‌گذاری شده است. .br \fI:'a,'z!xxd\fR .PP استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند .B vim(1) برای بازیابی یک دامپ باینری هگزادسیمال که بین `a' و `z' نشانه‌گذاری شده است. .br \fI:'a,'z!xxd \-r\fR .PP استفاده از xxd به عنوان یک فیلتر در یک ویرایشگر مانند .B vim(1) برای بازیابی یک خط از یک دامپ هگزادسیمال. مکان‌نما را روی خط ببرید و تایپ کنید: .br \fI!!xxd \-r\fR .PP خواندن تک‌نویسه‌ها از یک خط سریال .br \fI% xxd \-c1 < /dev/term/b &\fR .br \fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR .br \fI% echo \-n foo > /dev/term/b\fR .PP خروجی در سبک فایل هدر C همراه با بایت صفر پایانی .br \fI% echo -n \&"0123456789\&" > digits\fR .br \fI% xxd -i -t digits\fR .br unsigned char digits[] = { .br 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 .br }; .br unsigned int digits_len = 10; .PP .SH "مقادیر بازگشتی (RETURN VALUES)" کدهای خطای زیر بازگردانده می‌شوند: .TP 0 هیچ خطایی رخ نداده است. .TP \-1 عملیات پشتیبانی نمی‌شود \%(\c .I \%xxd \-r \-i همچنان غیرممکن است). .TP 1 خطا در هنگام تجزیه گزینه‌ها. .TP 2 مشکل در فایل ورودی. .TP 3 مشکل در فایل خروجی. .TP 4,5 موقعیت جستجوی (seek) مورد نظر در دسترس نیست. .SH "همچنین ببینید (SEE ALSO)" uuencode(1), uudecode(1), patch(1) .br .SH "هشدارها (WARNINGS)" عجیب بودن این ابزار با مغز سازنده‌اش برابری می‌کند. استفاده کاملاً با مسئولیت خودتان است. از فایل‌ها رونوشت بگیرید. آن را ردگیری کنید. به یک جادوگر تبدیل شوید. .br .SH "نسخه (VERSION)" این صفحه راهنما نسخه 1.7 ابزار xxd از تاریخ 2024-05 را مستند می‌کند. .SH "نویسندگان (AUTHORS)" .br (c) 1990-1997 by Juergen Weigert .br .LP آزادانه توزیع کنید و نام مرا ذکر نمایید، .br کسب درآمد کنید و با من به اشتراک بگذارید، .br ضرر کنید و از من مطالبه‌ای نداشته باشید. .PP صفحه راهنما توسط تونی نوجنت (Tony Nugent) آغاز شد .br .br تغییرات جزئی توسط برام مولنار (Bram Moolenaar). ویرایش توسط یورگن وایگرت (Juergen Weigert). .PP