HEXDUMP(1) دستورهای کاربر HEXDUMP(1)

hexdump - نمایش محتویات فایل در قالبهای هگزادسیمال، دهدهی، هشتهشتی یا اسکی

hexdump [گزینه‌ها] فایل ...

hd [گزینه‌ها] فایل ...

ابزار hexdump یک پالایه (فیلتر) است که محتوای فایل‌های مشخص‌شده، یا در صورت عدم تعیین فایل، ورودی استاندارد را در قالبی که کاربر مشخص می‌کند نمایش می‌دهد.

در ادامه، آرگومان‌های length و offset می‌توانند با پسوندهای ضربی KiB (=1024)، MiB (=1024*1024) و به همین ترتیب GiB، TiB، PiB، EiB، ZiB و YiB همراه شوند (عبارت "iB" اختیاری است؛ برای نمونه "K" همان معنای "KiB" را دارد)، یا پسوندهای KB (=1000)، MB (=1000*1000) و به همین ترتیب GB، TB، PB، EB، ZB و YB.

-b, --one-byte-octal

نمایش هشتهشتی تک‌بایتی. آفست ورودی را به صورت هگزادسیمال، و به دنبال آن شانزده بایت از داده‌های ورودی را در هر خط به صورت هشتهشتی، سه‌رقمی با صفرهای پرکننده و جداشده با فاصله نمایش می‌دهد.

-X, --one-byte-hex

نمایش هگزادسیمال تک‌بایتی. آفست ورودی را به صورت هگزادسیمال، و به دنبال آن شانزده بایت از داده‌های ورودی را در هر خط به صورت هگزادسیمال، دو رقمی با صفرهای پرکننده و جداشده با فاصله نمایش می‌دهد.

-c, --one-byte-char

نمایش کاراکتری تک‌بایتی. آفست ورودی را به صورت هگزادسیمال، و به دنبال آن شانزده کاراکتر از داده‌های ورودی را در هر خط به صورت تراز در سه ستون و جداشده با فاصله نمایش می‌دهد.

-C, --canonical

نمایش استاندارد هگزادسیمال و اسکی. آفست ورودی را به صورت هگزادسیمال و به دنبال آن شانزده بایت هگزادسیمال دو رقمی جداشده با فاصله، و سپس همان شانزده بایت را در قالب %_p محصور میان نویسه‌های | نمایش می‌دهد. فراخوانی برنامه با نام hd این گزینه را به طور خودکار اعمال می‌کند.

-d, --two-bytes-decimal

نمایش ده‌دهی دو بایتی. آفست ورودی را به صورت هگزادسیمال و به دنبال آن در هر خط، هشت واحد دو بایتی از داده‌های ورودی را در مبنای ده‌دهی بدون علامت، پنج رقمی با صفرهای پرکننده و جداشده با فاصله نمایش می‌دهد.

-e, --format format_string

یک رشته قالب‌بندی برای نمایش داده‌ها مشخص می‌کند.

-f, --format-file file

فایلی حاوی یک یا چند رشته قالب‌بندی جداشده با خط جدید را مشخص می‌کند. خطوط خالی و خطوطی که اولین نویسه غیرخالی آن‌ها علامت هش (#) است نادیده گرفته می‌شوند.

-L, --color[=when]

واحدهای رنگی را برای خروجی می‌پذیرد. آرگومان اختیاری when می‌تواند auto، never یا always باشد. اگر آرگومان when حذف شود، مقدار پیش‌فرض auto خواهد بود. رنگ‌ها را می‌توان غیرفعال کرد؛ برای پیش‌فرض داخلی کنونی خروجی --help را ببینید. همچنین زیربخش رنگ‌ها و بخش رنگ‌ها (COLORS) در ادامه را مشاهده کنید.

-n, --length length

تنها length بایت از ورودی را تفسیر و پردازش می‌کند.

-o, --two-bytes-octal

نمایش هشتهشتی دو بایتی. آفست ورودی را به صورت هگزادسیمال و به دنبال آن در هر خط، هشت مقدار دو بایتی از داده‌های ورودی را در مبنای هشتهشتی، شش رقمی با صفرهای پرکننده و جداشده با فاصله نمایش می‌دهد.

-s, --skip offset

به اندازه offset بایت از ابتدای ورودی را نادیده می‌گیرد و رد می‌کند.

-v, --no-squeezing

گزینه -v باعث می‌شود hexdump تمام داده‌های ورودی را نمایش دهد. بدون گزینه -v، هر تعداد گروه از خطوط خروجی که کاملاً با گروه خطوط قبلی یکسان باشند (به جز آفست‌های ورودی)، با یک خط حاوی یک ستاره تکی جایگزین می‌شوند.

-x, --two-bytes-hex

نمایش هگزادسیمال دو بایتی. آفست ورودی را به صورت هگزادسیمال و به دنبال آن در هر خط، هشت مقدار دو بایتی از داده‌های ورودی را در مبنای هگزادسیمال، چهار رقمی با صفرهای پرکننده و جداشده با فاصله نمایش می‌دهد.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

برای هر فایل ورودی، hexdump به صورت ترتیبی ورودی را در خروجی استاندارد رونوشت کرده و داده‌ها را بر اساس رشته‌های قالب‌بندی ارائه‌شده توسط گزینه‌های -e و -f، به همان ترتیبی که تعیین شده‌اند دگرگون می‌سازد.

یک رشته قالب‌بندی می‌تواند شامل هر تعداد واحد قالب‌بندی باشد که با فاصله از یکدیگر جدا شده‌اند. هر واحد قالب‌بندی تا سه مؤلفه دارد: شمارش تکرار، شمارش بایت، و قالب.

شمارش تکرار یک عدد صحیح مثبت اختیاری است که مقدار پیش‌فرض آن یک است. هر قالب به تعداد شمارش تکرار اعمال می‌شود.

شمارش بایت یک عدد صحیح مثبت اختیاری است. در صورت تعیین، تعداد بایت‌هایی را که باید در هر بار تکرار قالب تفسیر شوند مشخص می‌کند.

اگر شمارش تکرار و/یا شمارش بایت مشخص شده باشد، باید یک اسلش تکی پس از شمارش تکرار و/یا قبل از شمارش بایت قرار گیرد تا ابهام میان آن‌ها برطرف شود. فاصله‌های قبل یا بعد از اسلش نادیده گرفته می‌شوند.

تعیین قالب الزامی است و باید داخل علامت‌های نقل قول جفت (" ") قرار گیرد. این قالب مانند رشته‌های قالب‌بندی به سبک fprintf (به fprintf(3) مراجعه کنید) تفسیر می‌شود، به استثنای موارد زیر:

1.

از علامت ستاره (*) نمی‌توان به عنوان پهنای فیلد یا دقت استفاده کرد.

2.

برای هر نویسه تبدیل s، تعیین شمارش بایت یا دقت فیلد الزامی است (برخلاف رفتار پیش‌فرض fprintf(3) که در صورت مشخص نشدن دقت، کل رشته را چاپ می‌کند).

3.

نویسه‌های تبدیل h، l، n، p و q پشتیبانی نمی‌شوند.

4.

دنباله‌های گریز تک‌نویسه‌ای شرح داده شده در استاندارد C پشتیبانی می‌شوند:
NULL (نویسه تهی) \0
<alert character> (هشدار) \a
<backspace> (پس‌بر) \b
<form-feed> (برگه‌بر) \f
<newline> (خط جدید) \n
<carriage return> (بازگشت سطر) \r
<tab> (تب افقی) \t
<vertical tab> (تب عمودی) \v

ابزار hexdump همچنین از رشته‌های تبدیل اضافی زیر پشتیبانی می‌کند.

_a[dox]

آفست ورودی مربوط به بایت بعدی که نمایش داده خواهد شد را به صورت تجمعی در تمام فایل‌های ورودی نمایش می‌دهد. نویسه‌های پیوست‌شده d، o و x به ترتیب مبنای نمایش را به صورت ده‌دهی، هشتهشتی یا هگزادسیمال تعیین می‌کنند.

_A[dox]

تقریباً مشابه رشته تبدیل _a است با این تفاوت که تنها یک بار و پس از پردازش تمامی داده‌های ورودی انجام می‌شود.

_c

کاراکترها را در مجموعه‌نویسه پیش‌فرض چاپ می‌کند. نویسه‌های غیرقابل چاپ در قالب هشتهشتی سه‌نویسه‌ای با صفر در ابتدا نمایش می‌یابند، به استثنای مواردی که با نمادهای استاندارد گریز (در بالا ببینید) قابل نمایش هستند و به صورت رشته‌های دو نویسه‌ای نمایش داده می‌شوند.

_p

کاراکترها را در مجموعه‌نویسه پیش‌فرض چاپ می‌کند. نویسه‌های غیرقابل چاپ به صورت یک نقطه '.' نمایش داده می‌شوند.

_u

نویسه‌های US ASCII را نمایش می‌دهد، با این تفاوت که نویسه‌های کنترلی با استفاده از نام‌های کوچک زیر نمایش داده می‌شوند. نویسه‌های بزرگتر از 0xff هگزادسیمال به صورت رشته‌های هگزادسیمال نمایش داده می‌شوند.
000 nul 001 soh 002 stx 003 etx 004 eot 005 enq
006 ack 007 bel 008 bs 009 ht 00A lf 00B vt
00C ff 00D cr 00E so 00F si 010 dle 011 dc1
012 dc2 013 dc3 014 dc4 015 nak 016 syn 017 etb
018 can 019 em 01A sub 01B esc 01C fs 01D gs
01E rs 01F us 0FF del

در صورت قرار گرفتن در انتهای یک مشخص‌کننده قالب، hexdump رشته مربوطه را با رنگ مشخص‌شده برجسته می‌کند. شرایط، در صورت وجود، پیش از برجسته‌سازی ارزیابی می‌شوند.

_L[color_unit_1,color_unit_2,...,color_unit_n]

قالب دستوری کامل یک واحد رنگی به صورت زیر است:

[!]COLOR[:VALUE][@OFFSET_START[-END]]

!

شرط را نقیض می‌کند. لطفاً توجه داشته باشید که نقیض کردن یک واحد تنها در صورتی معنادار است که هم مقدار/رشته و هم آفست مشخص شده باشند. در این حالت، رشته خروجی مربوطه برجسته خواهد شد اگر و تنها اگر مقدار/رشته با مقدار موجود در آفست تعیین‌شده مطابقت نداشته باشد.

COLOR

یکی از ۸ رنگ اصلی پوسته.

VALUE

مقداری برای تطابق که در مبنای هگزادسیمال، هشتهشتی یا به صورت یک رشته مشخص می‌شود. لطفاً توجه داشته باشید که دنباله‌های گریز متداول در C توسط hexdump درون color_units تفسیر نمی‌شوند.

OFFSET

یک آفست یا محدوده‌ای از آفست‌ها که تطابق در آن بررسی می‌شود. توجه داشته باشید که تنها یک OFFSET_START منفرد از همان مقدار برای آفست END استفاده می‌کند.

شمارش بایت‌های پیش‌فرض و پشتیبانی‌شده برای نویسه‌های تبدیل به شرح زیر است:

%_c, %_p, %_u, %c

تنها شمارش یک بایتی.

%d, %i, %o, %u, %X, %x

پیش‌فرض چهار بایتی؛ شمارش‌های یک، دو و چهار بایتی پشتیبانی می‌شوند.

%E, %e, %f, %G, %g

پیش‌فرض هشت بایتی؛ شمارش چهار بایتی پشتیبانی می‌شود.

میزان داده تفسیرشده توسط هر رشته قالب‌بندی، مجموع داده‌های مورد نیاز هر واحد قالب‌بندی است که برابر است با حاصل‌ضرب شمارش تکرار در شمارش بایت، یا حاصل‌ضرب شمارش تکرار در تعداد بایت‌های مورد نیاز قالب در صورتی که شمارش بایت مشخص نشده باشد.

ورودی در قالب بلوک‌ها دستکاری و مدیریت می‌شود، که در آن یک بلوک به عنوان بزرگترین مقدار داده تعیین‌شده توسط هر رشته قالب‌بندی تعریف می‌گردد. رشته‌های قالب‌بندی که داده‌ای کمتر از یک بلوک ورودی را تفسیر می‌کنند و آخرین واحد قالب‌بندی آن‌ها هم تعدادی بایت را تفسیر کرده و هم شمارش تکرار مشخصی ندارد، شمارش تکرار آن‌ها افزایش می‌یابد تا زمانی که کل بلوک ورودی پردازش شود یا داده باقی‌مانده در بلوک برای برآورده کردن رشته قالب‌بندی کافی نباشد.

اگر چه بر اثر تعیین کاربر و چه به دلیل تغییر شمارش تکرار توسط hexdump به روش شرح داده شده در بالا، شمارش تکرار بزرگتر از یک باشد، در آخرین تکرار هیچ نویسه فاصله پایانی در خروجی درج نمی‌شود.

مشخص کردن شمارش بایت همراه با چند نویسه یا رشته تبدیل غیرمجاز و خطا است، مگر اینکه تمام نویسه‌ها یا رشته‌های تبدیل به جز یکی از آن‌ها _a یا _A باشند.

اگر بر اثر مشخص شدن گزینه -n یا رسیدن به پایان فایل، داده‌های ورودی تنها بخشی از رشته قالب‌بندی را برآورده کنند، بلوک ورودی با بایت‌های صفر به میزان کافی پر می‌شود تا تمام داده‌های در دسترس نمایش داده شوند (یعنی هر واحد قالب‌بندی که با انتهای داده‌ها همپوشانی دارد، تعدادی بایت صفر را نمایش خواهد داد).

خروجی بیشتر توسط چنین رشته‌های قالب‌بندی با تعداد معادلی از فاصله‌ها جایگزین می‌شود. تعداد معادل فاصله‌ها به عنوان تعداد فاصله‌های تولیدشده توسط نویسه تبدیل s با همان پهنای فیلد و دقت نویسه یا رشته تبدیل اصلی تعریف می‌شود، اما در حالی که هر یک از نویسه‌های فلگ تبدیل '+'، ' ' و '#' حذف شده و به یک رشته تهی (NULL) اشاره دارد.

اگر هیچ رشته قالب‌بندی مشخص نشود، نمایش پیش‌فرض بسیار شبیه به قالب خروجی -x خواهد بود (گزینه -x باعث می‌شود فضای بیشتری بین واحدهای قالب‌بندی نسبت به خروجی پیش‌فرض استفاده شود).

دستور hexdump در صورت موفقیت با وضعیت 0 و در صورت بروز خطا با مقداری بزرگتر از 0 خارج می‌شود.

انتظار می‌رود که ابزار hexdump با استاندارد IEEE Std 1003.2 ("POSIX.2") سازگار باشد.

نمایش ورودی در قالب بررسی و خوانش (perusal):

"%06.6_ao "  12/1 "%3_u "
"\t" "%_p "
"\n"

پیاده‌سازی رفتار گزینه -x:

"%07.7_Ax\n"
"%07.7_ax  " 8/2 "%04x " "\n"

مثال امضای بوت MBR: هایلایت کردن آدرس‌ها با رنگ فیروزه‌ای (cyan) و بایت‌های واقع در آفست‌های 510 و 511 با رنگ سبز اگر مقدارشان 0xAA55 باشد، و در غیر این صورت با رنگ قرمز:

"%07.7_Ax_L[cyan]\n"
"%07.7_ax_L[cyan]  " 8/2 "   %04x_L[green:0xAA55@510-511,!red:0xAA55@510-511] " "\n"

رنگ‌آمیزی خروجی بر اساس قابلیت‌های terminal-colors.d(5) پیاده‌سازی شده است. رنگ‌آمیزی ضمنی را می‌توان با ایجاد یک فایل خالی

/etc/terminal-colors.d/hexdump.disable

برای دستور hexdump یا برای تمامی ابزارها با فایل

/etc/terminal-colors.d/disable

غیرفعال کرد.

از نسخه 2.41، متغیر محیطی $NO_COLOR نیز برای غیرفعال‌سازی رنگ‌آمیزی خروجی پشتیبانی می‌شود، مگر اینکه صراحتاً توسط یک گزینه خط فرمان فعال شده باشد.

مسیرهای اختصاصی کاربر شامل $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d بر تنظیمات سراسری اولویت دارند.

توجه داشته باشید که ممکن است رنگ‌آمیزی خروجی به صورت پیش‌فرض فعال باشد، و در این حالت نیازی به وجود قبلی دایرکتوری‌های terminal-colors.d نیست.

برای گزارش باگ‌ها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.

دستور hexdump بخشی از بسته util-linux است که می‌توان آن را از آرشیو کرنل لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت کرد.

2026-06-16 util-linux 2.41.5