.TH FILE 1 "2022-10-26" "file 5.44" "دستورات کاربر" .SH "نام (NAME)" file \- تشخیص و تعیین نوع فایل .SH "خلاصه دستور (SYNOPSIS)" .B file [\fB\-bcdEhiklLNnprsSvzZ0\fR] [\fB\-\-apple\fR] [\fB\-\-exclude\-quiet\fR] [\fB\-\-extension\fR] [\fB\-\-mime\-encoding\fR] [\fB\-\-mime\-type\fR] [\fB\-e\fR \fI\,نام‌آزمون\/\fR] [\fB\-F\fR \fI\,جداکننده\/\fR] [\fB\-f\fR \fI\,فایل‌اسامی\/\fR] [\fB\-m\fR \fI\,فایل‌های‌جادویی\/\fR] [\fB\-P\fR \fI\,نام=مقدار\/\fR] \fI\,فایل\/\fR... .br .B file \fB\-C\fR [\fB\-m\fR \fI\,فایل‌های‌جادویی\/\fR] .br .B file [\fB\-\-help\fR] .SH "توضیحات (DESCRIPTION)" این صفحه راهنما نسخه 5.44 از دستور .B file را مستند می‌کند. .PP دستور .B file هر آرگومان را جهت دسته‌بندی و تشخیص نوع آن آزمایش می‌کند. سه مجموعه آزمون به ترتیب زیر انجام می‌شوند: آزمون‌های سیستم فایل، آزمون‌های جادویی (magic)، و آزمون‌های زبان. نخستین آزمونی که با موفقیت انجام شود، موجب چاپ نوع فایل خواهد شد. .PP نوع چاپ‌شده معمولاً شامل یکی از کلمات زیر خواهد بود: .B text (فایل تنها حاوی نویسه‌های چاپی و چند نویسه کنترلی متداول است و خواندن آن روی یک ترمینال ASCII احتمالاً ایمن و بی‌خطر است)، .B executable (فایل حاوی نتیجه کامپایل برنامه‌ای با قالبی قابل فهم برای یکی از کرنل‌های یونیکس است)، یا .B data به معنای هر چیز دیگر (معمولاً داده‌های «باینری» یا غیرقابل چاپ). استثنائات شامل قالب‌های فایل شناخته‌شده‌ای هستند که مشخصاً حاوی داده‌های باینری می‌باشند (مانند فایل‌های core یا آرشیوهای tar). هنگام اصلاح فایل‌های جادویی یا خود برنامه، حتماً این کلیدواژه‌ها را حفظ کنید؛ کاربران به دانستن این نکته متکی هستند که تمامی فایل‌های خواندنی در یک دایرکتوری، کلمه .B text را چاپ می‌کنند. کاری را که برکلی انجام داد تکرار نکنید و عبارت «shell commands text» را به «shell script» تغییر ندهید. .PP آزمون‌های سیستم فایل بر پایه بررسی مقدار برگشتی از فراخوان سیستمی .BR stat (2) عمل می‌کنند. برنامه بررسی می‌کند که آیا فایل خالی است یا نوع خاصی از فایل است. هر نوع فایل شناخته‌شده مناسب با سیستمی که روی آن در حال اجرا هستید (مانند سوکت‌ها، پیوندهای نمادین، یا لوله‌های نام‌گذاری‌شده (FIFO) در سیستم‌هایی که آن‌ها را پیاده‌سازی کرده‌اند) در صورتی که در فایل سرآیند .I تعریف شده باشند، شناسایی می‌شوند. .PP آزمون‌های جادویی برای بررسی فایل‌هایی با داده‌هایی با قالب‌های ثابت مشخص استفاده می‌شوند. نمونه کلاسیک آن یک فایل اجرایی باینری (برنامه کامپایل‌شده) .B a.out است که ساختار آن در .IR ، .I و احتمالاً .I در دایرکتوری استاندارد include تعریف شده است. این فایل‌ها دارای یک «عدد جادویی» (magic number) هستند که در جای مشخصی نزدیک ابتدای فایل ذخیره شده و به سیستم‌عامل یونیکس اعلام می‌کند که فایل یک باینری اجرایی است و از میان چند نوع موجود به کدام تعلق دارد. مفهوم «عدد جادویی» با تعمیم به فایل‌های داده نیز اعمال شده است. هر فایلی با یک شناسه تغییرناپذیر در یک آفست کوچک ثابت درون فایل معمولاً می‌تواند به این روش توصیف شود. اطلاعات شناسایی این فایل‌ها از مسیر .I /etc/magic و فایل جادویی کامپایل‌شده .I /usr/share/misc/magic.mgc خوانده می‌شود، یا در صورت عدم وجود فایل کامپایل‌شده، از فایل‌های موجود در دایرکتوری .I /usr/share/misc/magic خوانده می‌شود. علاوه بر این، در صورت وجود .I $HOME/.magic.mgc یا .IR $HOME/.magic ، این فایل‌ها با اولویت نسبت به فایل‌های جادویی سیستم مورد استفاده قرار می‌گیرند. .PP اگر فایلی با هیچ‌یک از ورودی‌های فایل جادویی همخوانی نداشته باشد، مورد بررسی قرار می‌گیرد تا مشخص شود آیا یک فایل متنی است یا خیر. مجموعه‌های نویسه ASCII، ISO-8859-x، نویسه‌های غیراستاندارد 8 بیتی extended-ASCII (مانند موارد استفاده‌شده در سیستم‌های مکینتاش و IBM PC)، یونی‌کد با کدگذاری UTF-8، یونی‌کد با کدگذاری UTF-16، و EBCDIC را می‌توان با دامنه‌ها و توالی‌های بایت متفاوتی که متن چاپی را تشکیل می‌دهند تشخیص داد. اگر فایلی در هر یک از این آزمون‌ها پذیرفته شود، مجموعه نویسه‌های آن گزارش می‌گردد. فایل‌های ASCII، ISO-8859-x، UTF-8 و extended-ASCII به عنوان «text» شناسایی می‌شوند زیرا در تقریباً هر ترمینالی خوانا هستند؛ اما UTF-16 و EBCDIC صرفاً به عنوان «character data» گزارش می‌شوند زیرا گرچه حاوی متن هستند، اما متنی است که برای خوانده شدن نیاز به تبدیل و ترجمه دارد. علاوه بر این، .B file تلاش می‌کند تا ویژگی‌های دیگر فایل‌های متنی را نیز تعیین کند. اگر پایان خطوط فایل به جای استاندارد یونیکس (LF)، با CR، CRLF یا NEL خاتمه یافته باشد، این موضوع گزارش داده می‌شود. همچنین فایل‌هایی که حاوی توالی‌های گریز (escape sequences) یا overstriking باشند مشخص خواهند شد. .PP پس از اینکه .B file مجموعه نویسه‌های استفاده‌شده در یک فایل متنی را مشخص کرد، تلاش خواهد کرد تا زبان نگارش فایل را شناسایی کند. آزمون‌های زبان به دنبال رشته‌های خاصی می‌گردند (نظیر آنچه در .I آمده است) که می‌توانند در هر نقطه‌ای از چند بلوک نخست فایل ظاهر شوند. برای نمونه، کلیدواژه .B .br نشان می‌دهد که فایل به احتمال زیاد یک فایل ورودی .BR troff (1) است، همان‌طور که کلیدواژه .B struct یک برنامه C را نشان می‌دهد. این آزمون‌ها نسبت به دو دسته پیشین از قابلیت اطمینان کمتری برخوردارند، بنابراین در پایان اجرا می‌شوند. روال‌های آزمون زبان همچنین برخی موارد گوناگون دیگر (مانند آرشیوهای .BR tar (1) و فایل‌های JSON) را نیز آزمایش می‌کنند. .PP هر فایلی که نتوان آن را در قالب هیچ‌یک از مجموعه‌های نویسه فهرست‌شده در بالا شناسایی کرد، به سادگی به عنوان «data» گزارش می‌شود. .SH "گزینه‌ها (OPTIONS)" .TP \fB\-\-apple\fR موجب می‌شود دستور .B file نوع فایل و کد سازنده (creator code) را مطابق نسخه‎های قدیمی‌تر MacOS چاپ کند. این کد شامل هشت حرف است که اولی نوع فایل و دومی سازنده آن را توصیف می‌کند. این گزینه تنها برای قالب‌هایی درست کار می‌کند که خروجی سبک اپل برای آن‌ها تعریف شده باشد. .TP \fB\-b\fR, \fB\-\-brief\fR عدم درج نام فایل در ابتدای خطوط خروجی (حالت مختصر). .TP \fB\-C\fR, \fB\-\-compile\fR نوشتن فایل خروجی .I magic.mgc که شامل نسخه تجزیه‌شده (پیش‌پارس‌شده) فایل جادویی یا دایرکتوری آن است. .TP \fB\-c\fR, \fB\-\-checking\-printout\fR چاپ بررسی وضعیت فرم تجزیه‌شده فایل جادویی. معمولاً همراه با گزینه .B \-m جهت اشکال‌زدایی یک فایل جادویی جدید پیش از نصب آن به کار می‌رود. .TP \fB\-d\fR چاپ اطلاعات اشکال‌زدایی داخلی روی خروجی خطای استاندارد (stderr). .TP \fB\-E\fR در صورت بروز خطاهای سیستم فایل (مانند پیدا نشدن فایل و غیره)، به جای برخورد با خطا به عنوان خروجی عادی مطابق با استاندارد POSIX و ادامه کار، یک پیام خطا صادر کرده و خارج می‌شود. .TP \fB\-e\fR, \fB\-\-exclude\fR \fI\,نام‌آزمون\/\fR حذف آزمون با نام .I نام‌آزمون از فهرست آزمون‌های انجام‌شده برای تعیین نوع فایل. نام‌های معتبر برای آزمون‌ها عبارتند از: .RS .TP .B apptype نوع برنامه EMX (فقط روی EMX). .TP .B ascii انواع گوناگون فایل‌های متنی (این آزمون بدون در نظر گرفتن تنظیم گزینه «encoding»، برای حدس زدن کدگذاری متن تلاش خواهد کرد). .TP .B encoding کدگذاری‌های مختلف متن برای آزمون‌های soft magic. .TP .B tokens برای سازگاری با نسخه‌های پیشین نادیده گرفته می‌شود. .TP .B cdf چاپ جزئیات فایل‌های اسناد ترکیبی (Compound Document Files). .TP .B compress بررسی و جست‌وجوی درون فایل‌های فشرده‌شده. .TP .B csv بررسی فایل‌های مقادیر جداشده با کاما (CSV). .TP .B elf چاپ جزئیات فایل‌های ELF، مشروط بر اینکه آزمون‌های soft magic فعال بوده و magic مربوط به elf پیدا شود. .TP .B json بررسی فایل‌های JSON (مطابق استاندارد RFC-7159) از طریق تجزیه آن‌ها برای اعتبارسنجی انطباق. .TP .B soft مراجعه به فایل‌های جادویی (magic). .TP .B tar بررسی فایل‌های tar از طریق راستی‌آزمایی جمع کنترلی (checksum) سرآیند ۵۱۲ بایتی tar. حذف این آزمون با استفاده از روش soft magic می‌تواند توصیف دقیق‌تری از محتوا ارائه دهد. .TP .B text مترادفی برای «ascii». .RE .TP \fB\-\-exclude\-quiet\fR مانند .B \-\-exclude اما نادیده گرفتن آزمون‌هایی که .B file آن‌ها را نمی‌شناسد. این گزینه برای سازگاری با نسخه‌های قدیمی‌تر .B file در نظر گرفته شده است. .TP \fB\-\-extension\fR چاپ فهرستی از پسوندهای معتبر برای نوع فایل یافت‌شده، جداشده با اسلش. .TP \fB\-F\fR, \fB\-\-separator\fR \fI\,جداکننده\/\fR استفاده از رشته مشخص‌شده به عنوان جداکننده میان نام فایل و نتیجه نوع فایل برگشتی. مقدار پیش‌فرض «:» است. .TP \fB\-f\fR, \fB\-\-files\-from\fR \fI\,فایل‌اسامی\/\fR خواندن نام فایل‌های مورد بررسی از .I فایل‌اسامی (در هر خط یک نام) پیش از فهرست آرگومان‌ها. باید یا .I فایل‌اسامی یا دست‌کم یک آرگومان نام فایل وجود داشته باشد؛ برای آزمایش ورودی استاندارد، از «-» به عنوان آرگومان نام فایل استفاده کنید. توجه داشته باشید که با برخورد با این گزینه، فایل اسامی باز شده و نام‌های داخل آن پیش از پردازش گزینه‌های دیگر بررسی می‌شوند. این قابلیت پردازش چندین فهرست فایل با آرگومان‌های خط فرمان متفاوت را در یک بار اجرای دستور فراهم می‌کند. بنابراین اگر می‌خواهید جداکننده را مشخص کنید، باید آن را پیش از تعیین فهرست فایل‌ها قرار دهید، مثلاً: .B "\-F @ \-f namefile" به جای .BR "\-f namefile \-F @" . .TP \fB\-h\fR, \fB\-\-no\-dereference\fR دنبال نکردن پیوندهای نمادین (در سیستم‌هایی که از پیوندهای نمادین پشتیبانی می‌کنند). اگر متغیر محیطی .B POSIXLY_CORRECT تعریف نشده باشد، این حالت پیش‌فرض است. .TP \fB\-i\fR, \fB\-\-mime\fR موجب می‌شود دستور .B file به جای خروجی سنتی قابل خواندن برای انسان، رشته‌های MIME type را چاپ کند؛ به عنوان مثال ممکن است عبارت «text/plain; charset=us-ascii» را به جای «ASCII text» برگرداند. .TP \fB\-\-mime\-type\fR, \fB\-\-mime\-encoding\fR مانند .BR \-i ، اما تنها عنصر (یا عناصر) مشخص‌شده را چاپ می‌کند. .TP \fB\-k\fR, \fB\-\-keep\-going\fR متوقف نشدن در نخستین تطابق و ادامه دادن فرآیند بررسی. به تطابق‌های بعدی پیشوند رشته «\[rs]012\- » افزوده خواهد شد (اگر خط جدید می‌خواهید، گزینه .B \-r را ببینید). الگوی جادویی با بیشترین قدرت (گزینه .B \-l را ببینید) در ابتدا می‌آید. .TP \fB\-l\fR, \fB\-\-list\fR نمایش فهرستی از الگوها و قدرت آن‌ها که بر اساس قدرت در .BR magic (5) به صورت نزولی مرتب شده‌اند و برای تطابق به کار می‌روند (گزینه .B \-k را نیز ببینید). .TP \fB\-L\fR, \fB\-\-dereference\fR دنبال کردن پیوندهای نمادین، مشابه گزینه هم‌نام در .BR ls (1) (در سیستم‌هایی که از پیوندهای نمادین پشتیبانی می‌کنند). اگر متغیر محیطی .B POSIXLY_CORRECT تعریف شده باشد، این حالت پیش‌فرض است. .TP \fB\-m\fR, \fB\-\-magic\-file\fR \fI\,فایل‌های‌جادویی\/\fR مشخص کردن فهرست متفاوتی از فایل‌ها و دایرکتوری‌های حاوی الگوهای جادویی. این مقدار می‌تواند یک ورودی واحد یا فهرستی جداشده با دونقطه (کولون) باشد. اگر یک فایل جادویی کامپایل‌شده در کنار یک فایل یا دایرکتوری یافت شود، به جای آن استفاده خواهد شد. .TP \fB\-N\fR, \fB\-\-no\-pad\fR عدم افزودن فاصله‌های خالی (padding) به نام فایل‌ها جهت تراز کردن آن‌ها در خروجی. .TP \fB\-n\fR, \fB\-\-no\-buffer\fR تخلیه اجباری خروجی استاندارد (flush کردن stdout) پس از بررسی هر فایل. این گزینه تنها هنگام بررسی فهرستی از فایل‌ها کاربرد دارد و برای برنامه‌هایی در نظر گرفته شده که خروجی نوع فایل را از طریق پایپ دریافت می‌کنند. .TP \fB\-p\fR, \fB\-\-preserve\-date\fR در سیستم‌هایی که از .BR utime (3) یا .BR utimes (2) پشتیبانی می‌کنند، تلاش برای حفظ زمان دسترسی آخرین فایل‌های تجزیه‌وتحلیل‌شده، به گونه‌ای که وانمود شود .B file هرگز آن‌ها را نخوانده است. .TP \fB\-P\fR, \fB\-\-parameter\fR \fI\,نام=مقدار\/\fR تنظیم محدودیت‌های پارامترهای گوناگون. .RS .PP .nf نام پیش‌فرض توضیحات bytes 1048576 بیشینه بایت‌های خوانده‌شده از فایل elf_notes 256 بیشینه یادداشت‌های ELF پردازش‌شده elf_phnum 2048 بیشینه بخش‌های برنامه ELF پردازش‌شده elf_shnum 32768 بیشینه بخش‌های ELF پردازش‌شده encoding 65536 بیشینه بایت‌ها جهت ارزیابی کدگذاری indir 50 محدودیت بازگشت برای جادوی نامستقیم name 50 محدودیت شمارش استفاده برای name/use regex 8192 محدودیت طول برای جست‌وجوهای regex .fi .RE .TP \fB\-r\fR, \fB\-\-raw\fR عدم تبدیل نویسه‌های غیرقابل چاپ به فرمت \eooo. در حالت عادی .B file نویسه‌های غیرقابل چاپ را به نمایش اکتال (هشت‌هشتی) آن‌ها تبدیل می‌کند. .TP \fB\-s\fR, \fB\-\-special\-files\fR در حالت عادی، .B file تنها تلاش می‌کند فایل‌هایی را خوانده و نوع آن‌ها را تعیین کند که .BR stat (2) آن‌ها را فایل معمولی گزارش کرده باشد. این کار مانع از بروز مشکلات می‌شود، زیرا خواندن فایل‌های خاص ممکن است پیامدهای ناخواسته‌ای به همراه داشته باشد. مشخص کردن گزینه .B \-s موجب می‌شود .B file فایل‌های خاص بلاکی یا کاراکتری را نیز بخواند. این ویژگی برای تشخیص نوع سیستم فایل در پارتیشن‌های خام دیسک، که فایل‌های خاص بلاکی هستند، مفید است. این گزینه همچنین باعث می‌شود .B file اندازه فایل گزارش‌شده توسط .BR stat (2) را نادیده بگیرد، زیرا در برخی سیستم‌ها برای پارتیشن‌های خام دیسک اندازه صفر گزارش می‌شود. .TP \fB\-S\fR, \fB\-\-no\-sandbox\fR در سیستم‌هایی که libseccomp (https://github.com/seccomp/libseccomp) در دسترس است، گزینه .B \-S محدودسازی ایزوله (sandboxing) را که به طور پیش‌فرض فعال است، غیرفعال می‌کند. این گزینه برای اجرای برنامه‌های فشرده‌زدایی خارجی توسط .B file لازم است، یعنی زمانی که گزینه .B \-z تعیین شده باشد و فشرده‌زداهای داخلی برنامه در دسترس نباشند. در سیستم‌هایی که قابلیت sandbox موجود نیست، این گزینه هیچ اثری ندارد. .IP .B نکته: نسخه دبیان این دستور بدون پشتیبانی از seccomp کامپایل شده است، بنابراین این گزینه اثری ندارد. .TP \fB\-v\fR, \fB\-\-version\fR چاپ اطلاعات نسخه برنامه و خروج. .TP \fB\-z\fR, \fB\-\-uncompress\fR تلاش برای بررسی درون فایل‌های فشرده‌شده. .TP \fB\-Z\fR, \fB\-\-uncompress\-noreport\fR تلاش برای بررسی درون فایل‌های فشرده‌شده، اما تنها گزارش اطلاعات محتوا نه وضعیت فشرده‌سازی. .TP \fB\-0\fR, \fB\-\-print0\fR چاپ یک نویسه تهی «\e0» پس از پایان نام فایل. برای برش دادن خروجی با دستور .BR cut (1) بسیار مناسب است. این گزینه تاثیری بر جداکننده، که همچنان چاپ می‌شود، ندارد. .IP اگر این گزینه بیش از یک بار تکرار شود، .B file تنها نام فایل و پس از آن یک نویسه NUL، سپس توضیحات (یا متن ERROR:) و به دنبال آن نویسه NUL دوم را برای هر ورودی چاپ می‌کند. .TP \fB\-\-help\fR نمایش پیام راهنما و خروج. .SH "متغیرهای محیطی (ENVIRONMENT)" متغیر محیطی .B MAGIC می‌تواند برای تعیین نام پیش‌فرض فایل جادویی استفاده شود. اگر این متغیر مقداردهی شده باشد، .B file تلاشی برای باز کردن .I $HOME/.magic نخواهد کرد. دستور .B file در صورت لزوم پسوند «.mgc» را به مقدار این متغیر می‌افزاید. متغیر محیطی .B POSIXLY_CORRECT (در سیستم‌هایی که از پیوندهای نمادین پشتیبانی می‌کنند) کنترل می‌کند که آیا .B file پیوندهای نمادین را دنبال کند یا خیر. اگر تنظیم شده باشد، پیوندها دنبال می‌شوند وگرنه خیر. این رفتار توسط گزینه‌های .B \-L و .B \-h نیز کنترل می‌شود. .SH "فایل‌ها (FILES)" .TP .I /usr/share/misc/magic.mgc فهرست پیش‌فرض کامپایل‌شده فایل‌های جادویی (magic). .TP .I /usr/share/misc/magic دایرکتوری حاوی فایل‌های جادویی پیش‌فرض. .SH "وضعیت خروج (EXIT STATUS)" در صورت اجرای موفقیت‌آمیز، .B file با مقدار 0 و در صورت بروز خطا با مقدار بزرگتر از 0 خارج می‌شود. خطاهای زیر موجب صدور پیام‌های تشخیصی می‌شوند، اما طبق استاندارد POSIX بر کد خروج برنامه تاثیری ندارند مگر اینکه گزینه .B \-E مشخص شده باشد: .IP \(bu 2 فایل پیدا نشود .IP \(bu 2 مجوز خواندن فایل وجود نداشته باشد .IP \(bu 2 نوع فایل قابل تشخیص نباشد .SH "مثال‌ها (EXAMPLES)" .EX $ file file.c file /dev/{wd0a,hda} file.c: C program text file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped /dev/wd0a: block special (0/0) /dev/hda: block special (3/0) $ file \-s /dev/wd0{b,d} /dev/wd0b: data /dev/wd0d: x86 boot sector $ file \-s /dev/hda{,1,2,3,4,5,6,7,8,9,10} /dev/hda: x86 boot sector /dev/hda1: Linux/i386 ext2 filesystem /dev/hda2: x86 boot sector /dev/hda3: x86 boot sector, extended partition table /dev/hda4: Linux/i386 ext2 filesystem /dev/hda5: Linux/i386 swap file /dev/hda6: Linux/i386 swap file /dev/hda7: Linux/i386 swap file /dev/hda8: Linux/i386 swap file /dev/hda9: empty /dev/hda10: empty $ file \-i file.c file /dev/{wd0a,hda} file.c: text/x-c file: application/x-executable /dev/hda: application/x-not-regular-file /dev/wd0a: application/x-not-regular-file .EE .SH "همچنین ببینید (SEE ALSO)" .BR hexdump (1), .BR od (1), .BR strings (1), .BR magic (5) .SH "انطباق با استانداردها (STANDARDS CONFORMANCE)" تصور می‌شود که این برنامه فراتر از تعریف رابط System V برای FILE(CMD) عمل کند، تا جایی که بتوان از زبان مبهم مندرج در آن برداشت کرد. رفتار آن تا حد زیادی با برنامه هم‌نام در System V سازگار است. با این حال، این نسخه الگوهای جادویی بیشتری را می‌شناسد، بنابراین در بسیاری از موارد خروجی متفاوت (هرچند دقیق‌تر) تولید خواهد کرد. .PP یک تفاوت چشمگیر میان این نسخه و System V این است که این نسخه هرگونه فاصله سفید (white space) را به عنوان جداکننده در نظر می‌گیرد، بنابراین فاصله‌ها در رشته‌های الگو باید اسکیپ شوند. برای نمونه: .PP .EX >10 string language impress (imPRESS data) .EE .PP در یک فایل جادویی موجود باید به شکل زیر تغییر کند: .PP .EX >10 string language\e impress (imPRESS data) .EE .PP علاوه بر این، در این نسخه اگر رشته الگو حاوی بک‌اسلش باشد، باید اسکیپ شود. برای نمونه: .PP .EX 0 string \ebegindata Andrew Toolkit document .EE .PP در یک فایل جادویی موجود باید به صورت زیر تغییر یابد: .PP .EX 0 string \e\ebegindata Andrew Toolkit document .EE .PP نسخه‌های 3.2 و بالاتر SunOS از Sun Microsystems شامل یک دستور .B file مشتق‌شده از System V است، اما با برخی افزونه‌ها. این نسخه با نسخه Sun تنها در موارد جزئی تفاوت دارد. این نسخه شامل افزونه عملگر «&» است که به عنوان مثال به شکل زیر استفاده می‌شود: .PP .EX >16 long&0x7fffffff >0 not stripped .EE .SH "امنیت (SECURITY)" در سیستم‌هایی که libseccomp (https://github.com/seccomp/libseccomp) موجود است، دستور .B file محدود کردن فراخوان‌های سیستمی را تنها به موارد ضروری جهت اجرای برنامه اعمال می‌کند. این محدودیت زمانی که از .B file خواسته می‌شود تا فایل‌های ورودی را با اجرای برنامه‌های خارجی همراه با گزینه .B \-z فشرده‌زدایی کند، هیچ مزیت امنیتی فراهم نمی‌کند. برای فعال کردن اجرای فشرده‌زداهای خارجی، لازم است محیط امنیتی با گزینه .B \-S غیرفعال شود. .SH "دایرکتوری فایل‌های جادویی (MAGIC DIRECTORY)" ورودی‌های فایل‌های جادویی از منابع گوناگون، عمدتاً USENET جمع‌آوری شده و توسط نویسندگان مختلف اهدا شده‌اند. Christos Zoulas (نشانی زیر) ورودی‌های جادویی تکمیلی یا اصلاح‌شده را جمع‌آوری خواهد کرد. مجموعه‌ای تجمیع‌شده از ورودی‌های فایل‌های جادویی به صورت دوره‌ای توزیع می‌شود. .PP ترتیب ورودی‌ها در فایل جادویی حائز اهمیت است. بسته به سیستمی که استفاده می‌کنید، ترتیبی که آن‌ها کنار هم چیده شده‌اند ممکن است نادرست باشد. .SH "تاریخچه (HISTORY)" دستور .B file از زمان دست‌کم Research Version 4 (صفحه راهنمای مورخ نوامبر ۱۹۷۳) در هر یونیکسی وجود داشته است. نسخه System V یک تغییر عمده را ارائه داد: فهرست خارجی انواع جادویی. این تغییر سرعت برنامه را اندکی کاهش داد اما انعطاف‌پذیری آن را به مراتب بیشتر کرد. .PP این برنامه بر پایه نسخه System V توسط Ian Darwin به نشانی بدون نگاه کردن به کد منبع شخص دیگر نوشته شد. .PP جان گیلمور (John Gilmore) کد را به طور اساسی بازبینی و آن را نسبت به نسخه اول بسیار بهتر کرد. جف کولیر (Geoff Collyer) چندین نقص را کشف نمود و ورودی‌هایی برای فایل جادویی ارائه داد. مشارکت‌های عملگر «&» توسط Rob McMahon در سال ۱۹۸۹ انجام شد. .PP گای هریس (Guy Harris) از سال ۱۹۹۳ تا کنون تغییرات زیادی اعمال کرده است. .PP توسعه و نگهداری اصلی از سال ۱۹۹۰ تا کنون توسط کریستوس زولاس (Christos Zoulas) به نشانی انجام شده است. .PP توسط Chris Lowth در سال ۲۰۰۰ برای پشتیبانی از گزینه .B \-i جهت چاپ رشته‌های نوع MIME با استفاده از یک فایل جادویی جایگزین و منطق داخلی تغییر یافت. .PP توسط Eric Fischer در ژوئیه ۲۰۰۰ برای شناسایی کدهای نویسه و تلاش جهت تشخیص زبان فایل‌های غیر ASCII اصلاح شد. .PP توسط Reuben Thomas بین سال‌های ۲۰۰۷ تا ۲۰۱۱ جهت ارتقای پشتیبانی MIME، ادغام جادوهای MIME و غیر MIME، پشتیبانی از دایرکتوری‌ها علاوه بر فایل‌های مجزا، رفع اشکالات فراوان، به‌روزرسانی قوانین، ارتقای سیستم بیلد و مستندات و بازنویسی بایندینگ‌های پایتون در پایتون خالص اصلاح شد. .PP فهرست همکاران دایرکتوری «magic» بسیار طولانی‌تر از آن است که در اینجا گنجانده شود. مشارکت‌کنندگان بسیاری در کدهای منبع نام برده شده‌اند. .SH "اطلاعیه حقوقی (LEGAL NOTICE)" حق نشر (c) برای Ian F. Darwin، تورنتو، کانادا، 1986-1999 محفوظ است. تحت مجوز استاندارد برکلی (BSD) توزیع شده؛ فایل COPYING را در توزیع منبع ببینید. .PP فایل‌های .I tar.h و .I is_tar.c توسط John Gilmore از برنامه حوزه عمومی .BR tar (1) وی نوشته شده‌اند و تحت مجوز فوق نیستند. .SH "گزارش اشکالات (BUGS)" لطفاً گزارش باگ‌ها و وصله‌ها را به سامانه ردیابی اشکالات در .I https://bugs.astron.com/ یا فهرست پستی ارسال کنید. .SH "برنامه آینده (TODO)" اصلاح خروجی تا بررسی گزینه‌های MIME و APPLE در سراسر کد پخش نباشد و خروجی نهایی تنها در یک محل انجام شود. .PP رسیدگی به MAGIC_CONTINUE و چاپ \e012\- میان ورودی‌ها پیچیده و دست‌وپاگیر است؛ نیاز به بازسازی ساختار دارد. .PP برخی از منطق‌های مربوط به کدگذاری به صورت هاردکد در encoding.c قرار دارند و در صورت وجود ویژگی !:charset می‌توان آن‌ها را به فایل‌های جادویی منتقل کرد. .SH "دسترسی (AVAILABILITY)" می‌توانید آخرین نسخه اصلی نویسنده را از طریق FTP ناشناس در ftp.astron.com در دایرکتوری .I /pub/file/file-X.YZ.tar.gz دریافت کنید.