كتيبات سطر الأوامر

Man » دليل file عبر الإنترنت - وثائق مفصلة عبر الإنترنت لصفحة دليل man الخاصة بالأمر file

🌍
file — تحديد نوع الملف

ملخص

file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding]
[--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] [-P name=value]
file ...
file -C [-m magicfiles]
file [--help]

الوصف

توثق صفحة الدليل هذه الإصدار 5.46 من الأمر file.

يقوم الأمر file باختبار كل وسيطة في محاولة لتصنيفها. هناك ثلاث مجموعات من الاختبارات، يتم تنفيذها بالترتيب التالي: اختبارات نظام الملفات، واختبارات السحر، واختبارات اللغة. يسبب أول اختبار ينجح في طباعة نوع الملف.

عادةً ما يحتوي النوع المطبوع على إحدى الكلمات التالية: text (يحتوي الملف على أحرف مطبوعة فقط وعدد قليل من أحرف التحكم الشائعة، ومن المحتمل أن يكون آمنًا للقراءة على جهاز طرفي ASCII)، أو executable (يحتوي الملف على نتيجة تجميع برنامج بتنسيق يمكن فهمه بواسطة نواة UNIX أو نظام آخر)، أو data (بمعنى أي شيء آخر، وعادةً ما تكون البيانات "ثنائية" أو غير قابلة للطباعة). الاستثناءات هي تنسيقات الملفات المعروفة (ملفات kernel، وأرشيفات tar) التي يُعرف أنها تحتوي على بيانات ثنائية. عند تعديل ملفات السحر أو البرنامج نفسه، تأكد من الحفاظ على هذه الكلمات الرئيسية. يعتمد المستخدمون على معرفة أن جميع الملفات القابلة للقراءة في الدليل تحتوي على الكلمة "text" المطبوعة. لا تفعل كما فعلت بيركلي وغيرت "shell commands text" إلى "shell script".

تعتمد اختبارات نظام الملفات على فحص القيمة التي يتم إرجاعها من استدعاء النظام stat(2). يتحقق البرنامج مما إذا كان الملف فارغًا، أو ما إذا كان نوعًا من الملفات الخاصة. يتم تحديد أي أنواع ملفات معروفة مناسبة للنظام الذي تقوم بتشغيله (المآخذ، والروابط الرمزية، أو الأنابيب المسماة (FIFOs) على تلك الأنظمة التي تنفذها) إذا تم تعريفها في ملف الرأس الخاص بالنظام .

تُستخدم اختبارات السحر للتحقق من الملفات التي تحتوي على بيانات بتنسيقات ثابتة معينة. المثال الكلاسيكي لهذا هو الملف القابل للتنفيذ الثنائي (برنامج مُجمَّع) a.out، والذي يتم تعريف تنسيقه في و وربما في دليل التضمين القياسي. تحتوي هذه الملفات على "رقم سحري" مخزن في مكان معين بالقرب من بداية الملف يخبر نظام التشغيل UNIX أن الملف عبارة عن ملف قابل للتنفيذ ثنائي، وأي من عدة أنواع منه. تم تطبيق مفهوم "الرقم السحري" عن طريق الامتداد على ملفات البيانات. يمكن عادةً وصف أي ملف يحتوي على معرف ثابت في إزاحة ثابتة صغيرة داخل الملف بهذه الطريقة. يتم قراءة المعلومات التي تحدد هذه الملفات من /etc/magic وملف السحر المُجمَّع /usr/share/misc/magic.mgc، أو الملفات الموجودة في الدليل /usr/share/misc/magic إذا لم يكن الملف المُجمَّع موجودًا. بالإضافة إلى ذلك، إذا كان $HOME/.magic.mgc أو $HOME/.magic موجودًا، فسيتم استخدامه بدلاً من ملفات السحر الخاصة بالنظام.

إذا لم يتطابق الملف مع أي من الإدخالات الموجودة في ملف "السحر"، فسيتم فحصه لمعرفة ما إذا كان يبدو وكأنه ملف نصي. يمكن تمييز ملفات ASCII و ISO-8859-x ومجموعات الأحرف الموسعة غير ISO 8-bit (مثل تلك المستخدمة على أنظمة Macintosh و IBM PC) و Unicode المشفرة بتنسيق UTF-8 و Unicode المشفرة بتنسيق UTF-16 ومجموعات الأحرف المشفرة بتنسيق EBCDIC من خلال النطاقات والتسلسلات المختلفة من البايتات التي تشكل النص القابل للطباعة في كل مجموعة. إذا اجتاز الملف أيًا من هذه الاختبارات، فسيتم الإبلاغ عن مجموعة الأحرف الخاصة به. يتم تحديد ملفات ASCII و ISO-8859-x و UTF-8 والملفات ذات الأحرف الموسعة على أنها "نص" لأنها ستكون قابلة للقراءة إلى حد كبير على أي طرفية تقريبًا؛ في حين أن ملفات UTF-16 و EBCDIC هي ببساطة "بيانات أحرف" لأنها، على الرغم من أنها تحتوي على نص، إلا أن هذا النص سيتطلب ترجمة قبل أن يتمكن من قراءته.

بالإضافة إلى ذلك، سيحاول الملف تحديد خصائص أخرى لملفات النصوص. إذا كانت أسطر الملف تنتهي بـ CR أو CRLF أو NEL، بدلاً من LF القياسية في نظام Unix، فسيتم الإبلاغ عن ذلك. سيتم أيضًا تحديد الملفات التي تحتوي على تسلسلات هروب مضمنة أو طباعة فوقية.

بمجرد أن يحدد الملف مجموعة الأحرف المستخدمة في ملف نصي، فإنه سيحاول تحديد اللغة التي كُتب بها الملف. تبحث اختبارات اللغة عن سلاسل معينة (انظر ) التي يمكن أن تظهر في أي مكان في البضعة كتل الأولى من الملف. على سبيل المثال، تشير الكلمة الرئيسية .br إلى أن الملف من المحتمل أن يكون ملف إدخال troff(1)، تمامًا كما تشير الكلمة الرئيسية struct إلى برنامج C. هذه الاختبارات أقل موثوقية من المجموعتين السابقتين، لذلك يتم إجراؤها أخيرًا. تختبر إجراءات اختبار اللغة أيضًا بعض العناصر المتنوعة (مثل أرشيفات tar(1) وملفات JSON).

يتم اعتبار أي ملف لا يمكن تحديده على أنه مكتوب بأي من مجموعات الأحرف المذكورة أعلاه ببساطة على أنه "بيانات".

الخيارات

--apple
يتسبب هذا الخيار في إخراج الأمر file نوع الملف ورمز المنشئ المستخدم في إصدارات macOS القديمة. يتكون الرمز من ثمانية أحرف، يصف الحرف الأول نوع الملف، ويصف الحرف الأخير المنشئ. يعمل هذا الخيار بشكل صحيح فقط لتنسيقات الملفات التي تم تعريف إخراج نمط apple لها.

-b، --brief
لا تقم بإلحاق أسماء الملفات بأسطر الإخراج (الوضع المختصر).

-C، --compile
اكتب ملف magic.mgc يحتوي على نسخة مُحللة مسبقًا من ملف السحر أو الدليل.

-c، --checking-printout
تسبب طباعة فحص للنموذج المُحلل من ملف السحر. يتم استخدامه عادةً مع الخيار -m لتصحيح ملف السحر الجديد قبل تثبيته.

-d
يطبع معلومات التصحيح الداخلية إلى stderr.

-E
عند حدوث أخطاء في نظام الملفات (لم يتم العثور على الملف وما إلى ذلك)، بدلاً من معالجة الخطأ كإخراج عادي كما يقتضي POSIX والاستمرار، قم بإصدار رسالة خطأ واخرج.

-e, --exclude testname

استبعد الاختبار المسمى في testname من قائمة الاختبارات المستخدمة لتحديد نوع الملف. أسماء الاختبارات الصالحة هي:

apptype نوع تطبيق EMX (فقط على EMX).

ascii أنواع مختلفة من ملفات النصوص (سيحاول هذا الاختبار تخمين ترميز النص، بغض النظر عن إعداد خيار ‘encoding’).

encoding ترميزات نصوص مختلفة لاختبارات السحر المرنة.

tokens تم تجاهله من أجل التوافق مع الإصدارات السابقة.

cdf يعرض تفاصيل ملفات المستندات المركبة.

compress يتحقق من الملفات المضغوطة وينظر إليها.

csv يتحقق من ملفات القيم المفصولة بفواصل.

elf يعرض تفاصيل ملفات ELF، بشرط تمكين اختبارات السحر المرنة والعثور على سحر ELF.

json يفحص ملفات JSON (RFC-7159) عن طريق تحليلها للتحقق من الامتثال.

soft يستشير ملفات السحر.

simh يفحص ملفات شريط SIMH.

tar يفحص ملفات tar عن طريق التحقق من المجموع الاختباري لرأس tar المكون من 512 بايت. يمكن أن يوفر استبعاد هذا الاختبار وصفًا أكثر تفصيلاً للمحتوى باستخدام طريقة السحر المرنة.

text مرادف لـ ‘ascii’.

--exclude-quiet

مثل --exclude، ولكن تجاهل الاختبارات التي لا يعرفها الملف. هذا مخصص للتوافق مع الإصدارات القديمة من الأمر file.

--extension

اطبع قائمة مفصولة بشرطة مائلة (/) من الامتدادات الصالحة لنوع الملف الذي تم العثور عليه.

-F, --separator separator

استخدم السلسلة المحددة كفاصل بين اسم الملف ونتيجة الملف التي يتم إرجاعها. الافتراضي هو ‘:’.

-f, --files-from namefile

اقرأ أسماء الملفات المراد فحصها من namefile (واحدة لكل سطر) قبل قائمة الوسائط. يجب أن يكون إما namefile أو على الأقل اسم ملف واحد موجودًا؛ لاختبار الإدخال القياسي، استخدم ‘-’ كاسم ملف. يرجى ملاحظة أن namefile يتم فك ترميزه ويتم معالجة أسماء الملفات المضمنة عند مواجهة هذا الخيار وقبل معالجة أي وسائط أخرى. يتيح ذلك معالجة قوائم ملفات متعددة باستخدام وسائط سطر أوامر مختلفة في نفس استدعاء الأمر file. وبالتالي، إذا كنت تريد تعيين الفاصل، فيجب عليك القيام بذلك قبل تحديد قائمة الملفات، مثل: “-F @ -f namefile”، بدلاً من: “-f namefile -F @”.

-h, --no-dereference

يتسبب هذا الخيار في عدم اتباع الروابط الرمزية (على الأنظمة التي تدعم الروابط الرمزية). هذا هو الافتراضي إذا لم يتم تعريف متغير البيئة POSIXLY_CORRECT.

-i, --mime

يتسبب هذا الخيار في أن يقوم الأمر file بإخراج سلاسل نوع MIME بدلاً من السلاسل الأكثر تقليدية المقروءة بواسطة الإنسان. وبالتالي، قد يقول ‘text/plain; charset=us-ascii’ بدلاً من “نص ASCII”.

--mime-type, --mime-encoding

مثل -i، ولكن اطبع فقط العنصر (العناصر) المحدد (ة).

-k, --keep-going

لا تتوقف عند التطابق الأول، استمر. سيتم إضافة السلسلة ‘\012- ’ إلى التطابقات اللاحقة. (إذا كنت تريد سطرًا جديدًا، فراجع الخيار -r). يأتي نمط السحر ذو القوة الأعلى (راجع الخيار -l) أولاً.


-l, --list
يعرض قائمة بالأنماط وقوتها مرتبة تنازليًا حسب قوة "magic(5)" المستخدمة للمطابقة (انظر أيضًا الخيار -k).

-L, --dereference
يجعل هذا الخيار يتبع الروابط الرمزية، مثل الخيار المسمى نفسه في [ls]({filename}../../ls)(1) (على الأنظمة التي تدعم الروابط الرمزية). هذا هو الوضع الافتراضي إذا تم تعريف متغير البيئة POSIXLY_CORRECT.

-m, --magic-file magicfiles
يحدد قائمة بديلة من الملفات والدلائل التي تحتوي على "magic". يمكن أن يكون عنصرًا واحدًا، أو قائمة مفصولة بنقطتين. إذا تم العثور على ملف "magic" مترجم بجوار ملف أو دليل، فسيتم استخدامه بدلاً من ذلك.

-N, --no-pad
لا تقم بتعبئة أسماء الملفات بحيث تتماشى في الإخراج.

-n, --no-buffer
يجبر هذا الخيار على تفريغ stdout بعد التحقق من كل ملف. هذا مفيد فقط عند التحقق من قائمة بالملفات. وهو مخصص للاستخدام من قبل البرامج التي تريد إخراج نوع الملف من خلال قناة.

-p, --preserve-date
على الأنظمة التي تدعم utime(3) أو utimes(2)، حاول الحفاظ على وقت الوصول إلى الملفات التي تم تحليلها، لجعله يبدو وكأنك لم تقرأها مطلقًا.

-P, --parameter name=value
يحدد حدود المعلمات المختلفة.

Name         Default    Explanation
bytes        1M         الحد الأقصى لعدد البايتات التي يمكن قراءتها من الملف
elf_notes    256        الحد الأقصى لعدد ملاحظات ELF التي تتم معالجتها
elf_phnum    2K         الحد الأقصى لعدد أقسام برنامج ELF التي تتم معالجتها
elf_shnum    32K        الحد الأقصى لعدد أقسام ELF التي تتم معالجتها
elf_shsize   128MB      الحد الأقصى لحجم قسم ELF الذي تتم معالجته
encoding     65K        الحد الأقصى لعدد البايتات المستخدمة لتحديد الترميز
indir        50         حد الاستدعاء التكراري لـ "magic" غير المباشر
name         100        حد استخدام "name/use magic"
regex        8K         حد طول عمليات البحث باستخدام التعبير النمطي

-r, --raw
لا تقم بترجمة الأحرف غير القابلة للطباعة إلى \ooo. عادةً، يقوم البرنامج file بترجمة الأحرف غير القابلة للطباعة إلى تمثيلها الثماني.

-s, --special-files
عادةً، يحاول البرنامج file تحديد نوع الملفات التي أبلغ عنها [stat]({filename}../../stat)(2) كملفات عادية فقط. يمنع هذا المشاكل، لأن قراءة الملفات الخاصة قد يكون لها عواقب غريبة. تحديد الخيار -s يجعل البرنامج file يقرأ أيضًا الملفات التي هي ملفات خاصة من نوع كتلة أو حرف. هذا مفيد لتحديد أنواع نظام الملفات للبيانات الموجودة في أقسام القرص الأولية، وهي ملفات خاصة من نوع كتلة. يتسبب هذا الخيار أيضًا في تجاهل حجم الملف كما أبلغت عنه [stat]({filename}../../stat)(2) لأن بعض الأنظمة تبلغ عن حجم صفر لأقسام القرص الأولية.

-S, --no-sandbox
على الأنظمة التي تتوفر فيها مكتبة libseccomp (https://github.com/seccomp/libseccomp)، يعطل الخيار -S العزل الذي يتم تمكينه افتراضيًا. هذا الخيار ضروري للبرنامج file لتشغيل برامج فك الضغط الخارجية، أي عندما يتم تحديد الخيار -z ولا تتوفر برامج فك الضغط المضمنة. على الأنظمة التي لا يتوفر فيها العزل، لا يكون لهذا الخيار أي تأثير.

ملاحظة: تم بناء هذا الإصدار من دبيان بدون دعم seccomp، لذا فإن هذا الخيار ليس له أي تأثير.

-v، --version
اطبع نسخة البرنامج واخرج.

-z، --uncompress
حاول البحث داخل الملفات المضغوطة.

-Z، --uncompress-noreport
حاول البحث داخل الملفات المضغوطة، ولكن اطبع معلومات حول المحتوى فقط وليس الضغط.

-0، --print0
اطبع حرف فارغًا ('\0') بعد نهاية اسم الملف. هذا مفيد لـ [cut]({filename}../../cut)(1) الإخراج. لا يؤثر هذا على الفاصل، الذي لا يزال مطبوعًا.

إذا تم تكرار هذا الخيار أكثر من مرة، فإن الأمر file يطبع فقط اسم الملف متبوعًا بحرف فارغ ثم الوصف (أو ERROR: text) متبوعًا بحرف فارغ ثانٍ لكل إدخال.

--help اطبع رسالة مساعدة واخرج.

البيئة

يمكن استخدام متغير البيئة MAGIC لتعيين اسم ملف السحر الافتراضي. إذا تم تعيين هذا المتغير، فلن يحاول الأمر file فتح $HOME/.magic. يضيف الأمر file الامتداد ".mgc" إلى قيمة هذا المتغير حسب الاقتضاء. يتحكم متغير البيئة POSIXLY_CORRECT (على الأنظمة التي تدعم الروابط الرمزية) فيما إذا كان الأمر file سيحاول تتبع الروابط الرمزية أم لا. إذا تم تعيينه، فإن الأمر file يتبع الرابط الرمزي، وإلا فإنه لا يتبع. يتم التحكم في هذا أيضًا بواسطة الخيارات -L و -h.

الملفات

/usr/share/misc/magic.mgc قائمة السحر المترجمة الافتراضية.
/usr/share/misc/magic دليل يحتوي على ملفات السحر الافتراضية.

حالة الخروج

سيخرج الأمر file بقيمة 0 إذا كانت العملية ناجحة أو >0 إذا حدث خطأ. تتسبب الأخطاء التالية في رسائل تشخيصية، ولكنها لا تؤثر على رمز الخروج للبرنامج (كما يتطلب معيار POSIX)، إلا إذا تم تحديد الخيار -E: لا يمكن العثور على ملف لا يوجد إذن لقراءة ملف لا يمكن تحديد نوع الملف

أمثلة

$ 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

انظر أيضًا

hexdump(1)، od(1)، strings(1)، magic(5)

التوافق مع المعايير

يُعتقد أن هذا البرنامج يتجاوز تعريف System V لواجهة FILE(CMD)، قدر الإمكان بناءً على اللغة الغامضة الموجودة فيه. سلوكه متوافق إلى حد كبير مع برنامج System V الذي يحمل نفس الاسم. ومع ذلك، فإن هذا الإصدار يعرف المزيد من السحر، لذلك سينتج عنه إخراج مختلف (على الرغم من أنه أكثر دقة) في كثير من الحالات.


الفرق الجوهري بين هذه النسخة و System V هو أن هذه النسخة تعامل أي مسافة بيضاء كفاصل، لذا يجب إلغاء أحرف المسافة في سلاسل الأنماط. على سبيل المثال،

>10     string  language impress        (imPRESS data)

في ملف السحر الحالي، يجب تغييره إلى

>10     string  language\ impress       (imPRESS data)

بالإضافة إلى ذلك، في هذه النسخة، إذا كانت سلسلة النمط تحتوي على علامة مائلة للخلف، فيجب إلغاءها. على سبيل المثال

0      string          \begindata      Andrew Toolkit document

في ملف السحر الحالي، يجب تغييره إلى

0      string          \\begindata     Andrew Toolkit document

تتضمن إصدارات SunOS 3.2 والإصدارات الأحدث من Sun Microsystems ملف الأمر file المشتق من إصدار System V، ولكن مع بعض الإضافات. تختلف هذه النسخة عن نسخة Sun في جوانب طفيفة فقط. يتضمن امتداد المعامل ‘&’، الذي يُستخدم على سبيل المثال:

>16     long&0x7fffffff >0              not stripped

الأمان

في الأنظمة التي يتوفر فيها libseccomp (https://github.com/seccomp/libseccomp)، يتم تطبيق الأمر file للحد من استدعاءات النظام إلى تلك الضرورية فقط لتشغيل البرنامج. لا يوفر هذا التطبيق أي فائدة أمنية عندما يُطلب من الأمر file فك ضغط الملفات المدخلة عن طريق تشغيل برامج خارجية باستخدام الخيار -z. لتمكين تنفيذ أدوات فك الضغط الخارجية، يجب تعطيل وضع الحماية باستخدام الخيار -S.

دليل السحر

تم جمع إدخالات ملف السحر من مصادر مختلفة، وخاصةً USENET، وقدمها العديد من المؤلفين. سيقوم Christos Zoulas (العنوان أدناه) بجمع إدخالات ملف السحر الإضافية أو المصححة. سيتم توزيع مجموعة من إدخالات ملف السحر بشكل دوري.

ترتيب الإدخالات في ملف السحر مهم. اعتمادًا على النظام الذي تستخدمه، قد يكون الترتيب الذي يتم تجميعه به غير صحيح.

التاريخ

كان هناك أمر file في كل نظام UNIX منذ الإصدار 4 على الأقل (صفحة الدليل بتاريخ نوفمبر 1973). قدم إصدار System V تغييرًا رئيسيًا واحدًا: قائمة أنواع السحر الخارجية. أدى ذلك إلى إبطاء البرنامج قليلاً، ولكنه جعله أكثر مرونة.

تمت كتابة هذا البرنامج، المستند إلى إصدار System V، بواسطة Ian Darwin ⟨_\⟩ دون النظر إلى شفرة مصدر أي شخص آخر.

قام جون جيلmore بمراجعة الكود على نطاق واسع، مما جعله أفضل من الإصدار الأول. وجد جيف كولير العديد من أوجه القصور وقدم بعض إدخالات ملف السحر. مساهمات المعامل ‘&’ بواسطة روب ماكماهون، ⟨_\⟩، 1989.

قام جاي هاريس، ⟨_\⟩، بإجراء العديد من التغييرات من عام 1993 حتى الآن.

التطوير والصيانة الأساسية من عام 1990 حتى الآن بواسطة Christos Zoulas ⟨_\⟩.

تم تعديله بواسطة كريس لوث ⟨_\⟩، 2000: للتعامل مع الخيار -i لإخراج سلاسل أنواع MIME، باستخدام ملف سحر وبنية داخلية بديلة.


تم تعديله بواسطة إريك فيشر ⟨_\⟩، يوليو 2000، لتحديد رموز الأحرف ومحاولة تحديد لغات الملفات غير ASCII.

تم تعديله بواسطة روبن توماس ⟨_\⟩، 2007-2011، لتحسين دعم MIME، ودمج MIME و nonMIME magic، ودعم الدلائل بالإضافة إلى ملفات magic، وتطبيق العديد من إصلاحات الأخطاء، وتحديث وإصلاح الكثير من الـ magic، وتحسين نظام الإنشاء، وتحسين الوثائق، وإعادة كتابة الـ Python bindings بلغة Python خالصة.

قائمة المساهمين في دليل "magic" (ملفات magic) طويلة جدًا بحيث لا يمكن تضمينها هنا. أنت تعرف من أنتم، شكرًا لكم. يتم سرد العديد من المساهمين في ملفات المصدر.

إشعار قانوني

حقوق النشر (ج) إيان إف. داروين، تورنتو، كندا، 1986-1999. يغطيها حقوق النشر القياسية لتوزيع برامج بيركلي؛ راجع الملف COPYING في توزيعة المصدر.

لم يتم تغطية الملفين tar.h و is_tar.c بحقوق النشر المذكورة أعلاه، وقد كتبهما جون جيلמור من برنامجه العام tar(1).

الأخطاء

يرجى الإبلاغ عن الأخطاء وإرسال التصحيحات إلى أداة تتبع الأخطاء على https://bugs.astron.com/ أو قائمة البريد على ⟨_\⟩ (يرجى زيارة https://mailman.astron.com/mailman/listinfo/file أولاً للاشتراك).

المهام المعلقة

قم بإصلاح الإخراج بحيث لا تكون هناك حاجة إلى اختبارات لعلامات MIME و APPLE في كل مكان، ويتم إجراء الإخراج الفعلي في مكان واحد فقط. هذا يتطلب تصميمًا. اقتراح: قم بدفع المخرجات المحتملة إلى قائمة، ثم اختر القيمة التي تم دفعها مؤخرًا (الأكثر تحديدًا، نأمل) في النهاية، أو استخدم قيمة افتراضية إذا كانت القائمة فارغة. لا ينبغي أن يؤدي ذلك إلى إبطاء التقييم.

إن معالجة MAGIC_CONTINUE وطباعة \012 بين الإدخالات أمر مرهق ومعقد؛ قم بإعادة الهيكلة وتوحيدها.

يتم ترميز بعض منطق الترميز في encoding.c ويمكن نقله إلى ملفات magic إذا كان لدينا تعليق توضيحي !:charset.

استمر في معالجة جميع أخطاء magic. راجع Debian BTS للحصول على مصدر جيد.

قم بتخزين سلاسل طويلة بشكل تعسفي، على سبيل المثال للأنماط %s، بحيث يمكن طباعتها. يصحح خطأ Debian رقم 271672. يمكن القيام بذلك عن طريق تخصيص السلاسل في مجموعة سلاسل، وتخزين مجموعة السلاسل في نهاية ملف magic وتحويل جميع مؤشرات السلاسل إلى إزاحات نسبية من مجموعة السلاسل.

أضف بناء جملة للإزاحات النسبية بعد المستوى الحالي (خطأ Debian رقم 466037).

اجعل file -ki يعمل، أي يعطي أنواع MIME متعددة.

أضف مكتبة zip حتى نتمكن من إلقاء نظرة داخل مستندات Office2007 لطباعة المزيد من التفاصيل حول محتوياتها.

أضف خيارًا لطباعة عناوين URL لمصادر أوصاف الملفات.

قم بدمج عمليات البحث في البرامج النصية وأضف طريقة لربط أسماء البرامج القابلة للتنفيذ بأنواع MIME (على سبيل المثال، قم بإنشاء قيمة magic لـ !:mime تتسبب في البحث عن السلسلة الناتجة في جدول). سيؤدي ذلك إلى تجنب إضافة نفس magic بشكل متكرر لكل مترجم hash-bang جديد.

عندما يكون واصف الملف متاحًا، يمكننا تخطي المخزن المؤقت وتعديله بدلاً من إدارة المخزن المؤقت المعقدة التي نقوم بها الآن.


قم بتصحيح "name" و "use" للتحقق من الاتساق في وقت الترجمة (تكرار "name"، و "use" يشير إلى "name" غير المعرّف). اجعل "name" / "use" أكثر كفاءة من خلال الاحتفاظ بقائمة مرتبة من الأسماء.
قم بمعالجة خاصة للرمز "^" لعكس ترتيب البايتات في المحلل اللغوي بحيث لا يتعين الهروب منه، ووثّق ذلك.

إذا تجاوزت الإزاحات المحددة داخليًا في الملف حجم المخزن المؤقت (متغير HOWMANY في ملف file.h)، فلن ننتقل إلى هذا الإزاحة، ولكننا نتوقف. سيكون من الأفضل إذا تم إجراء إدارة المخزن المؤقت عند توفر واصف الملف بحيث يمكننا التنقل حول الملف. يجب توخي الحذر على الرغم من ذلك لأن هذا له اعتبارات تتعلق بالأداء وبالتالي الأمن، حيث يمكن للمرء أن يبطئ الأمور عن طريق إجراء عمليات نقل متكررة.

هناك الآن دعم للاحتفاظ بمخازن مؤقتة منفصلة والحصول على إزاحات من نهاية الملف، ولكن لا تزال إدارة المخزن المؤقت الداخلية بحاجة إلى إعادة تصميم.

التوفر

يمكنك الحصول على أحدث إصدار من المؤلف الأصلي عن طريق FTP مجهول على ftp.astron.com في الدليل /pub/file/file-X.YZ.tar.gz.