.\" Process this file with .\" groff -man -Tascii dhex.1 .\" . .Dd Jan 19, 2019 .Os .Dt DHEX 1 . . .Sh "نام (NAME)" .Nm dhex .Nd ویرایشگر هگزادسیمال با حالت مقایسه (diff) . . .Sh "خلاصه دستور (SYNOPSIS)" . .Nm .Op Fl x .Nm .Op Fl h .Op Fl v .Op Fl g .Op Fl k .Bk -words .Op Fl ab ad ah ao Ar base address .Ek .Bk -words .Op Fl f Ar config-file .Ek .Bk -words .Op Fl m Ar marker-file .Ek .Bk -words .Op Fl ob od oh oo Ar offset .Ek .Bk -words .Op Fl r Ar searchlog .Ek .Bk -words .Op Fl sa sab Ar string (ascii) .Ek .Bk -words .Op Fl sh shb Ar string (hex) .Ek .Bk -words .Op Fl w Ar searchlog .Ek .Op Ar file .Nm .Op Fl h .Op Fl v .Op Fl g .Op Fl k .Bk -words .Op Fl a1b a1d a1h a1o Ar base address 1 .Ek .Bk -words .Op Fl a2b a2d a2h a2o Ar base address 2 .Ek .Bk -words .Op Fl cb .Ek .Bk -words .Op Fl cd Ar upper-limit .Ek .Bk -words .Op Fl cl .Ek .Bk -words .Op Fl f Ar config-file .Ek .Bk -words .Op Fl m Ar marker-file .Ek .Bk -words .Op Fl o1b o1d o1h o1o Ar offset1 .Ek .Bk -words .Op Fl o2b o2d o2h o2o Ar offset2 .Ek .Bk -words .Op Fl r1 Ar searchlog1 .Ek .Bk -words .Op Fl r2 Ar searchlog2 .Ek .Bk -words .Op Fl s1a s1ab s1h s1hb Ar string (ascii/hex) .Ek .Bk -words .Op Fl s2a s2ab s2h s2hb Ar string (ascii/hex) .Ek .Bk -words .Op Fl w1 Ar searchlog1 .Ek .Bk -words .Op Fl w2 Ar searchlog2 .Ek .Bk -words .Op Ar file1 file2 .Ek .Sh "توضیحات (DESCRIPTION)" .Nm یک ویرایشگر هگزادسیمال (hex) است. می‌توان از آن برای تغییر بایت‌های منفرد در فایل‌های بزرگ استفاده کرد. از آنجا که این برنامه در حالت متنی و مبتنی بر ncurses است، می‌تواند در سناریوهای متعددی اجرا شود. . ویژگی خاص آن حالت مقایسه (diff) است: با استفاده از آن، کاربر ابزاری بصری برای مقایسه فایل‌ها در اختیار دارد. این حالت زمانی فراخوانی می‌شود که .Nm به جای یک فایل، با دو فایل به عنوان پارامتر فراخوانی شود. .Sh "گزینه‌ها (OPTIONS)" تمامی گزینه‌ها به کوچک و بزرگ بودن حروف حساس نیستند و می‌توان آن‌ها را با حروف کوچک یا بزرگ وارد کرد. .Bl -tag -width 10n .It Fl ab ad ah ao Ar base address پس از بارگذاری یک فایل، هر نشانی یک نشانی پایه غیر از ۰ دریافت می‌کند. با این کار، کار کردن با رونوشت‌های حافظه جزئی آسان‌تر می‌شود. نشانی پایه را می‌توان به صورت دودویی (باینری) با .Op Fl ab ، دهدهی (دسیمال) با .Op Fl ad ، شانزده‌شانزدهی (هگزادسیمال) با .Op Fl ah یا هشت‌هشتی (اکتال) با .Op Fl ao مشخص کرد. .It Fl a1b a1d a1h a1o Ar base address 1 .It Fl a2b a2d a2h a2o Ar base address 2 برای حالت diff، می‌توان دو نشانی پایه مختلف تعیین کرد. همانند قبل، یک نشانی دودویی را می‌توان با .Op Fl a1b a2b ، دهدهی با .Op Fl a1d a2d ، شانزده‌شانزدهی با .Op Fl a1h a2h یا هشت‌هشتی با .Op Fl a1o a2o مشخص کرد. .Pp این نشانی پایه در فایل‌های نشانه‌گذار و همچنین گزارش‌های جستجو (searchlogs) محاسبه می‌شود. .It Fl cb cl فقط در حالت diff: فایل‌های ورودی را می‌توان از طریق خط فرمان با بهترین تطابق .Fl cb یا طولانی‌ترین تطابق .Fl cl همبسته کرد. این کار بسیار کند است. .It Fl cd Ar upper-limit فقط در حالت diff: فایل‌های ورودی را می‌توان از خط فرمان با کمترین اختلاف همبسته کرد. برای بهبود سرعت همبستگی، می‌توان یک حد بالا تعیین کرد. .It Fl f Ar configfile معمولاً فایل .dhexrc از پوشه خانگی کاربر خوانده می‌شود. با این پارامتر، هر فایل پیکربندی دیگری را می‌توان بارگذاری کرد. برای توضیحات مربوط به قالب فایل، .Xr dhexrc 5 را ببینید. .It Fl g نمایش مجوز برنامه .It Fl x راه‌اندازی ماشین‌حساب هگز (hexcal) .It Fl h نمایش صفحه راهنما .It Fl k راه‌اندازی دستی پیکربندی صفحه‌کلید پیش از بارگذاری هر فایلی. این مورد هنگام فراخوانی .Nm از یک ترمینال نامعمول بسیار مفید است. .It Fl m Ar markerfile در .Nm می‌توان نشانک‌ها (bookmarks) را تنظیم کرده و برای استفاده‌های بعدی در یک markerfile ذخیره نمود. با این پارامتر، markerfile در زمان شروع خوانده می‌شود و نیاز به خواندن بعدی آن‌ها از طریق رابط گرافیکی را برطرف می‌کند. قالب فایل آن‌ها در .Xr dhex_markers 5 توصیف شده است. .It Fl ob od oh oo Ar offset پس از بارگذاری فایل، مکان‌نما روی ۰ تنظیم شده و صفحه اول بایت‌ها روی صفحه نمایش داده می‌شود. با یکی از این پارامترها می‌توان از هر نقطه دیگری در فایل شروع کرد. موقعیت مکان‌نما را می‌توان به صورت یک عدد دودویی با .Op Fl ob ، دهدهی با .Op Fl od ، شانزده‌شانزدهی با .Op Fl oh یا هشت‌هشتی با .Op Fl oo مشخص کرد. .It Fl o1b o1d o1h o1o Ar offset1 .It Fl o2b o2d o2h o2o Ar offset2 برای حالت diff، می‌توان دو موقعیت مکان‌نمای مختلف را در زمان شروع تعیین کرد. باز هم موقعیت‌های مکان‌نما می‌توانند به صورت عدد دودویی با .Op Fl o1b o2b ، دهدهی با .Op Fl o1d o2d ، شانزده‌شانزدهی با .Op Fl o1h o2h یا هشت‌هشتی با .Op Fl o1o o2o داده شوند. .Pp بدین ترتیب، چند بایت اول فایل نادیده گرفته می‌شوند و تنها بقیه فایل مقایسه می‌گردد. .It Fl r Ar searchlog هنگام جستجو از خط فرمان، آفست‌ها از این گزارش جستجو خوانده می‌شوند. قالب آن در .Xr dhex_searchlog 5 شرح داده شده است. .It Fl r1 Ar searchlog1 .It Fl r2 Ar searchlog2 هنگام جستجو در دو فایل به طور هم‌زمان، آفست‌ها را می‌توان از دو گزارش جستجوی متفاوت خواند. .It Fl sa sab sh shb Ar string به جای تنظیم آفست مکان‌نما بر روی یک مقدار مطلق، می‌توان یک رشته خاص را از خط فرمان جستجو کرد. اگر یک .Op Fl ob od oh oo Ar offset اضافی وجود داشته باشد، جستجو از آنجا شروع خواهد شد. خواندن و نوشتن گزارش‌های جستجو به ترتیب با .Op Fl r Ar searchlog و .Op Fl w Ar searchlog امکان‌پذیر است. با .Op Fl sa Ar string رشته به صورت ASCII تفسیر می‌شود. .Op Fl sh Ar string آن را به صورت hex تفسیر می‌کند. برای جستجوی رو به عقب، می‌توان از .Op Fl sab Ar string یا .Op Fl shb Ar string استفاده کرد. .It Fl s1a s1ab s1h s1hb Ar string1 .It Fl s2a s2ab s2h s2hb Ar string2 در حالت diff، امکان جستجوی هم‌زمان برای دو رشته در دو فایل وجود دارد. .It Fl v چاپ نسخه .Nm . .It Fl w Ar searchlog هنگام جستجو از خط فرمان، نتایج را در این گزارش جستجو بنویس و خارج شو. این گزارش در قالبی نوشته می‌شود که در .Xr dhex_searchlog 5 توصیف شده است. .Pp .It Fl \&w1 Ar searchlog1 .It Fl \&w2 Ar searchlog2 هنگام جستجو در دو فایل به طور هم‌زمان، نتایج هر دو جستجو را در این فایل‌های گزارش بنویس. .El .Sh "رابط کاربری (USER INTERFACE)" .Ss "عمومی (General)" منوها دارای کلیدهای میانبر هستند و با رنگ متفاوتی نمایش داده می‌شوند. برای جابه‌جایی از یک آیتم منو به آیتم بعدی، می‌توان از کلیدهای جهت‌نما یا کلید TAB استفاده کرد. .Pp فیلدهای ورودی را می‌توان با فشردن ESC، ENTER یا هر کلید جهت‌نما بست. تنها با فشردن ESC تغییرات اعمال‌شده در آن‌ها ذخیره نخواهد شد. .Pp .Ss "پیکربندی صفحه‌کلید (The keyboard setup)" هنگام اجرای .Nm برای نخستین بار، بدون وجود هرگونه فایل پیکربندی یا با پارامتر \-k، نخستین صفحه‌ای که نمایش داده می‌شود صفحه پیکربندی صفحه‌کلید است. در این صفحه، برنامه از کاربر می‌خواهد کلیدهای مشخصی را فشار دهد؛ به ترتیب: ESCAPE، F1، F2، F3، F4، F5، F6، F7، F8، F9، F10، BACKSPACE، DEL، ENTER، TAB، بالا، پایین، راست، چپ، PG UP، PG DOWN، HOME و END. همچنین به کاربر اطلاع می‌دهد که قصد دارد بعداً چه استفاده‌ای از این کلیدها داشته باشد تا کاربر بتواند در مورد هر جایگزینی که ترجیح می‌دهد تصمیم بگیرد. اگر کاربر نخواهد عملکرد خاصی را به یک کلید معین اختصاص دهد، می‌تواند به سادگی ESCAPE را فشار داده و به پرسش بعدی برود. .Pp پس از فشردن تمامی کلیدها، کاربر می‌تواند انتخاب کند که آیا این کلیدها در فایل پیکربندی نوشته شوند یا خیر. .Ss "صفحه اصلی (The main screen)" صفحه اصلی به سه ستون تقسیم شده است: ستون نخست شامل آفست (موقعیت) درون فایل برای خط جاری است. ستون دوم حاوی بایت‌های فایل در قالب hex است. در نهایت، ستون سوم همان بایت‌ها را در قالب ascii نمایش می‌دهد. اگر بایتی قابل چاپ نباشد، با '.' جایگزین می‌شود. تعداد بایت‌های نمایش‌داده‌شده در هر خط به عرض ترمینال بستگی دارد. به عنوان مثال، اگر ترمینال ۸۰ کاراکتر عرض داشته باشد، ۱۶ بایت در هر خط نمایش داده می‌شود. .Pp اگر هیچ پارامتر .Op Fl o یا .Op Fl a دیگری در زمان شروع مشخص نشده باشد، مکان‌نما روی آفست ۰ تنظیم می‌شود و در ستون hex نیز نمایش داده می‌شود. در اینجا می‌توان آن را با کلیدهای جهت‌نما حرکت داد. با وارد کردن یک عدد هگزادسیمال، فایل ویرایش می‌شود. فایل را می‌توان در ستون ascii نیز ویرایش کرد، فقط با فشردن کلید TAB (یا هر کلیدی که در تنظیمات صفحه‌کلید جایگزین آن شده است). فشردن مجدد TAB مکان‌نما را به ستون hex بازمی‌گرداند. فشردن F9 (یا جایگزین آن) آخرین تغییرات را لغو (undo) می‌کند. تغییرات با رنگ متفاوتی نمایش داده می‌شوند. .Pp ویرایش در حالت diff امکان‌پذیر نیست. در این حالت، فشردن کلیدهای جهت‌نما هر دو فایل را به طور هم‌زمان حرکت می‌دهد. .Ss "صفحه رفتن به نشانی (The goto screen)" فشردن F1 (یا جایگزین آن) صفحه Goto... را باز می‌کند. در اینجا می‌توان بدون نیاز به پیمایش با کلیدهای جهت‌نما، مستقیماً به یک نشانی مشخص پرش کرد. نشانی را می‌توان در فیلد 'To' به صورت مطلق یا نسبی (برای جهش از روی مقدار مشخصی از بایت‌ها) وارد کرد. یک نشانی مطلق با فشردن '=' و یک نشانی نسبی با فشردن '+' یا '\-' به ترتیب برای جهش رو به جلو یا عقب انتخاب می‌شود. صرف‌نظر از حالت آدرس‌دهی، مقدار باید به صورت یک عدد هگزادسیمال وارد شود. .Pp همچنین می‌توان تا ده نشانک (bookmark) در این صفحه تنظیم کرد: فشردن '0'...'9' یکی از آن‌ها را انتخاب می‌کند. حرکت مکان‌نما به "Set" و فشردن ENTER یکی از آن نشانک‌ها را تغییر می‌دهد. فیلدهای "Diff:" تفاوت بین موقعیت فعلی مکان‌نما و نشانک را نشان می‌دهند. .Pp نشانک‌ها را می‌توان ذخیره و بارگذاری کرد، برای این منظور گزینه‌های "Save Markers" و "Load Markers" در پایین صفحه قرار دارند. با انتخاب یکی از آن‌ها، از کاربر نام فایل درخواست می‌شود. می‌توان در زمان راه‌اندازی با ارائه پارامتر .Op Fl m Ar markerfile یک فایل نشانه‌گذار را بارگذاری کرد. .Xr dhex_markers 5 قالب فایل‌های نشانه‌گذار را توصیف می‌کند. .Ss "جستجو (Searching)" فشردن F2 (یا جایگزین آن) صفحه Search... را باز می‌کند. در اینجا می‌توان یک رشته کوتاه وارد کرد (به صورت hex یا ascii). اگر فایل گزارشی انتخاب نشده باشد، مکان‌نما پس از انتخاب "Go" به رخداد بعدی این رشته جستجو پرش می‌کند. می‌توان انتخاب کرد که جستجو رو به جلو انجام شود یا رو به عقب. .Pp برای رفتن به رخداد بعدی باید F3 (یا جایگزین آن) فشرده شود. برای رفتن به رخداد قبلی باید F4 فشرده شود. خود جستجو در مرزهای فایل چرخش دارد، به این معنی که با رسیدن به انتهای فایل از ابتدا شروع می‌شود و بالعکس. .Pp گزارش‌های جستجو (searchlogs) روشی پیشرفته برای جستجو هستند: نوشتن در گزارش جستجو مکان‌نما را از یک رخداد به رخداد بعدی حرکت نمی‌دهد، بلکه در عوض، آفست‌های تمامی آن‌ها را در فایل گزارش می‌نویسد. قالب آن‌ها در .Xr dhex_searchlog 5 توصیف شده است. .Pp خواندن از این گزارش جستجو به این معنی است که جستجو تمام فایل را در بر نمی‌گیرد: تنها نشانی‌هایی که در این فایل ارائه شده‌اند مورد جستجو قرار می‌گیرند. بدین ترتیب می‌توان تغییرات خاصی را جستجو کرد؛ مانند تعداد جان‌های ذخیره‌شده در فایل ذخیره یک بازی. .Xr dhex_searchlog 5 قالب گزارش جستجو را توصیف می‌کند. .Ss "ماشین‌حساب هگز (HexCal)" فشردن F5 (یا جایگزین آن) یک ماشین‌حساب کوچک ۶۴ بیتی را باز می‌کند. این ماشین‌حساب علاوه بر انجام محاسبات حسابی (+, \-, *, /, باقی‌مانده)، قادر به انجام عملیات منطقی (and, or, xor, shift) نیز می‌باشد. سه ستون برای وارد کردن اعداد به صورت هگزادسیمال، دهدهی یا دودویی وجود دارد. فشردن 'x' این صفحه را می‌بندد. استفاده از آرگومان خط فرمان .Op Fl x آن را از خط فرمان راه‌اندازی می‌کند. .Ss "همبستگی (Correlation)" هنگامی که .Xr dhex 1 در حالت diff اجرا می‌شود، فشردن F6 (یا جایگزین آن) کادر گفتگوی همبستگی فایل را باز می‌کند. این بخش تلاش می‌کند تا آفست بهینه بین دو فایل را پیدا کند. سه الگوریتم برای یافتن این آفست وجود دارد: جستجو برای بهترین تطابق (بیشترین تعداد بایت‌های یکسان ممکن)، طولانی‌ترین تطابق (بیشترین تعداد بایت‌های متوالی یکسان ممکن)، یا کمترین اختلاف (کمترین اختلاف ممکن بین بایت‌ها). .Pp اگرچه در ابتدا ممکن است یکسان به نظر برسند، اما در عمل جستجو برای کمترین اختلاف سریع‌تر است. این سرعت حتی می‌تواند بیشتر شود اگر کاربر یک حد بالای اختلاف تعیین کند. .Pp با انتخاب Go، برنامه به دنبال آفست بهینه خواهد گشت. این کار مقداری زمان خواهد برد. .Ss "ذخیره و خروج (Saving and quitting)" فشردن F10 (یا جایگزین آن) برنامه .Nm را می‌بندد. در صورتی که تغییراتی در فایل اعمال شده باشد، کادر گفتگوی ذخیره باز می‌شود. در اینجا می‌توان انتخاب کرد که آیا تغییرات در فایل بازنویسی شوند یا خیر. .Sh "فایل‌ها (FILES)" $HOME/.dhexrc: مسیر پیش‌فرض فایل پیکربندی. اگر متغیر $HOME تنظیم نشده باشد، مسیر آن باید به صورت دستی مشخص شود. .Sh "اشکالات (BUGS)" گزارش باگ‌ها به .An Aq dettus@dettus.net . حتماً عبارت DHEX را در عنوان ایمیل درج کنید. .Sh "نویسنده (AUTHOR)" نوشته شده توسط .An Thomas Dettbarn .Sh "همچنین ببینید (SEE ALSO)" .Xr dhexrc 5 , .Xr dhex_markers 5 , .Xr dhex_searchlog 5