المجموع (يونكس)

أداة sum هي أداة قديمة متوفرة في بعض أنظمة التشغيل يونكس والأنظمة الشبيهة بيونكس . تُخرج هذه الأداة مجموعًا اختباريًا (checksum) مكونًا من 16 بتلكل ملف وسيط ، بالإضافة إلى عدد الكتل التي يشغلها على القرص. [ 1 ] تُستخدم خوارزميتان مختلفتان لحساب المجموع الاختباري. وقد تم التخلي عن معيار POSIXلصالح cksum .sum

ملخص

برنامج الجمع مفيد عمومًا لأغراض تاريخية فقط، وهو ليس جزءًا من معيار POSIX. يتوفر عادةً خوارزميتان: خوارزمية BSD للتحقق من المجموع وخوارزمية SYSV للتحقق من المجموع . وكلاهما أضعف من خوارزمية CRC ذات 32 بت الضعيفة أصلًا المستخدمة في برنامج cksum . [ 2 ]

الخوارزمية الافتراضية في أنظمة FreeBSD و GNU هي خوارزمية التحقق BSD. ويتم التبديل بين الخوارزميتين عبر خيارات سطر الأوامر. [ 2 ] [ 1 ]

الخوارزميتان الأكثر استخداماً هما كما يلي.

مجموع BSD، و-r في GNU sum و-o1 في FreeBSD cksum:

  • قم بتهيئة مجموع التحقق إلى 0
  • لكل بايت من دفق الإدخال
    • قم بإجراء تدوير يمين بت 16 بت بمقدار بت واحد على مجموع التحقق
    • أضف البايت إلى مجموع التحقق، ثم طبّق باقي القسمة 2^16 على النتيجة، وبذلك تحافظ على حجمها ضمن 16 بت.
  • والنتيجة هي مجموع اختباري مكون من 16 بت

ظهرت الخوارزمية المذكورة أعلاه في الإصدار السابع من يونكس .

مجموع النظام الخامس، -s في GNU sum و -o2 في FreeBSD cksum:

  • checksum0 = مجموع جميع بايتات دفق الإدخال modulo 2 ^ 32
  • checksum1 = checksum0 modulo 2 ^ 16 + checksum0 / 2 ^ 16
  • المجموع الاختباري = المجموع الاختباري 1 modulo 2^16 + المجموع الاختباري 1 / 2^16
  • والنتيجة هي مجموع اختباري مكون من 16 بت يتم حسابه من مجموع البايتات الأصلي المكون من 32 بت

بناء الجملة

يتم استدعاء أداة الجمع من سطر الأوامر وفقًا للصيغة التالية:

المجموع [خيار]... [ملف]...

مع إمكانية تحديد معلمات الخيارات التالية:

عندما لا يتم تحديد معلمات الملف، أو عندما يكون FILE هو - ، يتم استخدام الإدخال القياسي كملف إدخال.

مثال على الاستخدام:

$ echo Hello > testfile $ sum testfile 36978 1

مثال على استخدام الخيار -s في برنامج GNU sum:

$ echo Hello > testfile $ sum -s testfile 510 1 testfile

مثال على استخدام المدخلات القياسية، والمعامل -r، ودالة printf لتجنب سطر جديد:

$ printf Hello | sum -r 08401 1

انظر أيضاً

مراجع

  1. 1 2sum(1) — صفحات دليل من GNU coreutils
  2. 1 2دليل الأوامر العامة لنظام FreeBSDsum(1)