ملف (أمر)

fileهو أمر برمجي يُستخدم لعرض نوع البيانات الموجودة في ملف . وهو مدعوم بشكل شائع في أنظمة التشغيل يونكس والأنظمة الشبيهة بيونكس .

بما أن الأمر يستخدم خوارزميات سريعة نسبياً لتحديد نوع الملف ، فقد يُقدّم معلومات مُضلّلة. على سبيل المثال، قد يُخدع الأمر بإضافة رقم سحري في المحتوى حتى لو لم يتطابق باقي المحتوى مع ما يُشير إليه هذا الرقم. لذا، لا يُمكن الاعتماد كلياً على تقرير الأمر.

تتطلب مواصفات نظام يونكس الموحد (SUS) أن يُظهر الأمر السلوك التالي فيما يتعلق بالملف المحدد عبر سطر الأوامر :

  1. إذا تعذر قراءة الملف، أو كان نوع ملف يونكس الخاص به غير محدد، فسيُبلغ الأمر أن الملف قد تمت معالجته ولكن نوعه غير محدد.
  2. يجب أن يكون الأمر قادرًا على تحديد أنواع الدليل ، و FIFO ، والمقبس ، والملف الخاص بالكتلة ، والملف الخاص بالأحرف
  3. يتم الإبلاغ عن الملف ذي الطول الصفري على هذا النحو.
  4. يتم النظر في جزء أولي من الملف، والأمر هو استخدام اختبارات حساسة للموقع.
  5. يتم النظر في الملف بأكمله، والأمر هو استخدام اختبارات حساسة للسياق
  6. وإلا، فسيتم الإبلاغ عن الملف كملف بيانات.

تُنفَّذ الاختبارات الحساسة للموقع عادةً عن طريق مطابقة مواقع مختلفة داخل الملف مع قاعدة بيانات نصية تحتوي على أرقام سحرية (انظر قسم الاستخدام). وهذا يختلف عن الطرق الأبسط الأخرى مثل امتدادات الملفات وأنظمة مثل MIME .

في تطبيق System V، وتطبيق Ian Darwin، وتطبيق OpenBSD، يستخدم الأمر قاعدة بيانات لتوجيه عملية فحص البايتات الرئيسية. تُخزَّن قاعدة البيانات هذه كملف موجود في المسار التالي: `/usr/local /etc/magic.../usr/share/file/magic

تاريخ

نشأ هذا fileالأمر في الإصدار الرابع من أبحاث يونكس [ 2 ] في عام 1973. وقد جلب نظام التشغيل الخامس تحديثًا رئيسيًا مع العديد من التغييرات المهمة، وأبرزها نقل معلومات نوع الملف إلى ملف نصي خارجي بدلاً من تجميعها في الملف الثنائي نفسه.

تتضمن معظم توزيعات BSD ولينكس الرئيسية تطبيقًا مجانيًا مفتوح المصدر ، كتبه إيان داروين من الصفر في الفترة 1986-1987. [ 3 ] يحتفظ هذا التطبيق بمعلومات أنواع الملفات في ملف نصي بتنسيق مُستوحى من تنسيق إصدار System V. قام جيف كولير بتوسيعه عام 1989، ومنذ ذلك الحين ساهم فيه العديد من المطورين، بمن فيهم جاي هاريس، وكريس لوث، وإريك فيشر. ومنذ أواخر عام 1993، يتولى كريستوس زولاس مسؤولية صيانته. يمتلك نظام OpenBSD تطبيقًا فرعيًا خاصًا به، كُتب من الصفر، ولكنه لا يزال يستخدم مجموعة داروين/زولاس من معلومات تنسيق الملفات.

تم نقل الأمر fileإلى نظام التشغيل IBM i . [ 4 ]

ابتداءً من الإصدار 4.00 من تطبيق إيان داروين/كريستوس زولاس file، يتم تنفيذ وظائف الأمر وعرضها من خلال libmagicمكتبة يمكن الوصول إليها من قبل التعليمات البرمجية المستهلكة عبر الربط بلغة C (واللغات المتوافقة معها). [ 5 ] [ 6 ] [ 7 ] [ 8 ]

الاستخدام

يفرض نظام SUS [ 9 ] خيارات سطر الأوامر التالية:

  • -M fileيمنع هذا الخيار الاختبارات الافتراضية الحساسة للموقع والسياق، ويستبدلها بالاختبارات المحددة في ملف منسق خصيصًا.
  • -m file، كما هو الحال بالنسبة لـ -M، ولكن مع اختبارات بالإضافة إلى الاختبارات الافتراضية
  • -dيحدد هذا الخيار الاختبارات الافتراضية الحساسة للموقع والسياق؛ وهذا هو السلوك الافتراضي ما لم يتم تحديد خيارين -Mآخرين.-m
  • -hلا تقم بإلغاء مرجعية الروابط الرمزية التي تشير إلى ملف أو دليل موجود
  • -iلا تُصنّف الملف أكثر من مجرد الإبلاغ عنه على أنه: غير موجود، أو ملف خاص بالكتل، أو ملف خاص بالأحرف، أو دليل، أو FIFO ، أو مقبس، أو رابط رمزي، أو ملف عادي؛ إذ تتصرف إصدارات Ian Darwin وOpenBSD بشكل مختلف مع هذا الخيار، حيث تُخرج بدلاً من ذلك نوع وسائط الإنترنت (" نوع MIME ") الذي يُحدد تنسيق الملف المُعترف به.

قد تضيف التطبيقات خيارات إضافية. يضيف تطبيق إيان داروين خيارات مثل -s"الملفات الخاصة" و -k"الاستمرار" و -r"الخام"، من بين العديد من الخيارات الأخرى. [ 10 ]

أمثلة

بالنسبة لملف كود مصدر C ، يتم الإبلاغ عما يلي:file main.c

main.c: نص برنامج C

بالنسبة للملفات التنفيذية المُجمّعة، file programتُقدّم التقارير معلومات مثل:

البرنامج: ملف تنفيذي ELF 32 بت LSB ، معالج Intel 80386 ، الإصدار 1 ( SYSVمرتبط ديناميكيًا (يستخدم مكتبات مشتركةمُجرّد

بالنسبة لجهاز الكتلة /dev/hda ، file /dev/hda1يتم الإبلاغ عما يلي:

/dev/hda1: كتلة خاصة (0/0)

افتراضيًا، fileلا يحاول البرنامج قراءة ملفات الجهاز نظرًا لاحتمالية حدوث آثار غير مرغوب فيها. ولكن باستخدام الخيار غير القياسي -s(المتوفر في فرع إيان داروين)، والذي يطلب قراءة ملفات الجهاز لتحديد المحتوى، file -s /dev/hda1فإنه يُبلغ عن تفاصيل مثل:

/dev/hda1: نظام ملفات Linux/ i386 ext2

باستخدام خيار إيان داروين غير القياسي -k، لا يتوقف الأمر عند أول تطابق، بل يبحث عن أنماط مطابقة أخرى. هذا -rالخيار، المتوفر في بعض الإصدارات، يُظهر رمز السطر الجديد بصيغته الأصلية بدلاً من تمثيله الثماني. في نظام لينكس، file -k -r libmagic-dev_5.35-4_armhf.debيُبلغ عن معلومات مثل:

libmagic-dev_5.35-4_ armhf . deb : حزمة ثنائية من دبيان (التنسيق 2.0) - الأرشيف الحالي للواقع المعزز - بيانات

بالنسبة للملفات المضغوطة، file compressed.gzيتم الإبلاغ عن معلومات مثل:

compressed.gz: بيانات مضغوطة باستخدام gzip ، ملف مضغوط ، اسم الملف الأصلي، `compressed`، آخر تاريخ التعديل: الخميس 26 يناير 2006، الساعة 14:08:23، نظام التشغيل : يونكس

بالنسبة للملفات المضغوطة، file -i compressed.gzيتم الإبلاغ عن معلومات مثل:

compressed.gz: application/x-gzip ; charset = binary

بالنسبة لملف إدارة المشاريع، file data.ppmالتقارير:

data.ppm: بيانات صورة Netpbm PPM "rawbits"

بالنسبة لملف ثنائي عالمي من نوع Mach-O ، تقارير مثل:file /bin/cat

/bin/cat: ملف تنفيذي عالمي لنظام Mach-O يدعم بنيتين معماريتين /bin/cat (للبنية المعمارية ppc7400 ): ملف تنفيذي لنظام Mach-O يدعم ppc /bin/cat (للبنية i386): ملف تنفيذي Mach-O i386

للحصول على رابط رمزي ، file /usr/bin/viالتقارير:

/usr/bin/vi: رابط رمزي إلى vim

لا تتوفر خاصية تحديد الرابط الرمزي على جميع المنصات، وسيتم إلغاء الإشارة إليها إذا -Lتم تمريرها أو POSIXLY_CORRECTتعيينها.

انظر أيضاً

مراجع

  1. كريستوس زولاس (7 يونيو 2026). https://mailman.astron.com/pipermail/file/2026-June/001678.html . تاريخ الاطلاع: 8 يونيو 2026 .{{cite web}}: مفقود أو فارغ |title=( مساعدة )
  2. "مصدر صفحة دليل "file" في نظام UNIX V4" . مؤرشف من الأصل بتاريخ 10 ديسمبر 2019. تم الاطلاع عليه بتاريخ 13 مارس 2022 .
  3. تم تسجيل التاريخ المبكر لهذا البرنامج في مستودع CVS الخاص به؛ انظرتمت أرشفة سجل البرنامج الرئيسي بتاريخ 1 أبريل 2017 في أرشيف الإنترنت (Wayback Machine) .
  4. "برمجة Qshell لنظام IBM System i الإصدار 7.2" (ملف PDF) . IBM . مؤرشف (PDF) من الأصل بتاريخ 2021-03-05 . تم الاطلاع عليه بتاريخ 2020-09-05 .
  5. دليل مبرمج لينكس – وظائف المكتبة من Manned.orglibmagic(3)  
  6. دليل وظائف مكتبة NetBSDlibmagic(3)  
  7. زولاس، كريستوس (27 فبراير 2003). "الملف 3.41 متوفر الآن" . ملف (قائمة بريدية). مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 1 يناير 2013 .
  8. زولاس، كريستوس (24 مارس 2003). "الإصدار 4.00 من File متاح الآن" . File (قائمة بريدية). مؤرشف من الأصل في 28 ديسمبر 2016. تم الاطلاع عليه في 1 يناير 2013 .
  9. "المواصفات الأساسية لمجموعة Open Group، الإصدار 8 - أمر الملف " . مؤرشف من الأصل بتاريخ 14 مايو 2025. تم الاطلاع عليه بتاريخ 5 مايو 2025 .
  10. دليل مستخدم لينكس – أوامر المستخدم من Manned.orgfile(1)