حرف X

بناء وتنفيذ الأوامر من المدخلات القياسية

xargs

آخر تحديث: 2026-10-08
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

في نظام لينكس (Linux)، تقوم العديد من الأوامر بإنتاج قائمة طويلة من النتائج، مثل أسماء الملفات أو النصوص، ولكن المشكلة أن بعض الأوامر الأخرى لا تستطيع قراءة هذه القوائم مباشرة عبر الأنبوب البرمجي (Pipe)، بل تنتظر منك أن تكتب لها الأسماء يدوياً كمعاملات (Arguments) بجانب اسم الأمر. هنا يأتي دور أداة xargs؛ فهي تعمل كجسر ذكي يأخذ مخرجات الأمر الأول (المدخلات القياسية Standard Input) ويحولها تلقائياً إلى معاملات مرتبة يمررها للأمر الثاني دفعة واحدة. لتقريب الفكرة، تخيل أن لديك آلة تطبع أسماء ملفات على أوراق منفصلة، ولديك آلة أخرى لتمزيق الورق لكنها لا تستقبل إلا رزمة ورق مُدبسة معاً؛ أداة xargs هي الموظف الذي يجمع هذه الأوراق المتفرقة ويرتبها ويدخلها في آلة التمزيق بكفاءة عالية.

الشرح التقني المتقدم

يُعد أمر xargs أداة أساسية في سطر أوامر لينكس (Command Line) تُستخدم لقراءة البيانات من المدخلات القياسية (Standard Input) وتحويلها وتجميعها لتمريرها كمعاملات (Arguments) إلى أوامر أخرى لا تدعم قراءة التدفقات النصية مباشرة عبر الأنبوب البرمجي (Pipe).

آلية عمل الأمر والتغلب على قيود النظام

تكمن الأهمية الكبرى لأمر xargs في قدرته على إدارة موارد النظام (System Resources) وتجاوز خطأ تجاوز الحد الأقصى للمعاملات الشهير (Argument list too long):

الحد الأقصى للذاكرة (ARG_MAX): يفرض نظام التشغيل حداً أقصى لحجم البيانات التي يمكن تمريرها لأمر واحد في المرة الواحدة، ويقوم xargs بتقسيم القوائم الضخمة تلقائياً إلى دفعات صغيرة آمنة وتنفيذ الأمر عليها تباعاً دون استهلاك مفرط للذاكرة.

الاستخدام العملي مع أمر البحث (find)

يُستخدم xargs بشكل شائع مع أمر find لحذف أو معالجة آلاف الملفات دفعة واحدة بدلاً من تشغيل عملية (Process) مستقلة لكل ملف:

أمر التنفيذ للبحث عن الملفات المؤقتة وحذفها بأمان:

find /tmp -name "*.tmp" -print0 | xargs -0 rm -f

توضيح الخيارات والمعاملات التقنية المهمة في الأمر:

- الخيار -0 أو --null: يخبر xargs بأن العناصر المفصولة تعتمد على محرف العدم (Null Character) بدلاً من المسافات البيضاء، وهو ضروري جداً للتعامل الصحيح مع أسماء الملفات التي تحتوي على مسافات بالاقتران مع خيار -print0 في أمر find.

- الخيار -n: يحدد الحد الأقصى لعدد المعاملات المسموح بتمريرها في كل عملية تنفيذ، مثل كتابة xargs -n 1 لتنفيذ الأمر على عنصر واحد في كل مرة.

- الخيار -I: يسمح بتحديد رمز بديل (Placeholder) مثل {} لوضع المدخلات في مكان محدد داخل الأمر بدلاً من إضافتها في نهايته، ومثاله xargs -I {} mv {} /backup/ لنقل الملفات.

- الخيار -P: يُستخدم لتشغيل عدة عمليات على التوازي (Parallel Execution) لتسريع المهام الثقيلة عن طريق تحديد عدد الأنوية، مثل xargs -P 4 لتشغيل أربع عمليات متزامنة.

- الخيار -p: يفعل الوضع التفاعلي (Interactive Mode) حيث يطبع الأمر المراد تنفيذه ويطلب تأكيد المستخدم قبل التنفيذ الفعلي.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

عند التعامل مع ملفات النظام الحساسة أو القوائم غير الموثوقة، احرص دائماً على الجمع بين -print0 و xargs -0 لتجنب الأخطاء الكارثية الناتجة عن المسافات أو الرموز الخاصة في أسماء الملفات، واستخدم الخيار -p أو -t لمعاينة الأوامر والتحقق منها قبل تطبيق تغييرات جذرية لا يمكن التراجع عنها.

المصادر المعتمدة :