Skip to main content

مثال استخدامات الأمر "xargs"

شرح الـ Question Tag , السؤال المذيل في الانجليزي (أبريل 2025)

شرح الـ Question Tag , السؤال المذيل في الانجليزي (أبريل 2025)
Anonim

يتم استخدام الأمر xargs عادة في سطر الأوامر حيث يتم تمرير إخراج أمر واحد كوسيطة الإدخال إلى أمر آخر.

في العديد من الحالات ، لا توجد حاجة إلى أمر خاص مثل xargs لإنجاز ذلك ، نظرًا لأن مشغلي "الأنبوب" و "إعادة التوجيه" يقومون بنفس المعاملة النوعية. ومع ذلك ، هناك أحيانًا مشكلات في آلية المواسير وإعادة التوجيه الأساسية ، على سبيل المثال ، إذا كانت الحجج تحتوي على مسافات ، فإن xargs تتغلب عليها.

بالإضافة إلى ذلك ، xargs ينفذ الأمر المحدد مرارا وتكرارا ، إذا لزم الأمر ، لمعالجة جميع الوسائط المعطاة لها. في الواقع ، يمكنك تحديد عدد الوسائط التي يجب قراءتها من دفق الإدخال القياسي في كل مرة ينفذ فيها xargs الأمر المحدد.

بشكل عام ، يجب استخدام الأمر xargs إذا كان سيتم استخدام إخراج أمر واحد كجزء من الخيارات أو الوسيطات للأمر الثاني الذي يتم بث البيانات إليه (باستخدام عامل تشغيل الأنبوب "|"). تكون المواسير العادية كافية إذا كانت البيانات مخصصة لتكون الإدخال (القياسي) للأمر الثاني.

على سبيل المثال ، إذا استخدمت الأمر ls لإنشاء قائمة بأسماء ومجلدات الملفات ، ثم قم بتوجيه هذه القائمة إلى الأمر xargs الذي يقوم بتنفيذ echo ، فيمكنك تحديد عدد أسماء الملفات أو أسماء الدلائل التي تتم معالجتها بواسطة echo على كل تكرار كما يلي: :

ls | xargs -n 5 صدى

في هذه الحالة ، يسترد صدى خمسة أسماء ملف أو دليل في كل مرة. بما أن الصدى يضيف حرفًا جديدًا في النهاية ، يتم كتابة خمسة أسماء في كل سطر.

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

يقوم سطر الأوامر التالي بتصنيف دفق أسماء الملفات الناتجة عن البحث عن مجموعات من 200 قبل تمريرها إلى الأمر cp ، الذي يقوم بنسخها إلى دعم دليل.

find ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

يحدد "./" عنصر في الأمر find الدليل الحالي للبحث. تقوم الوسيطة "-pepe f" بتقييد البحث على الملفات ، بينما تقوم العلامة "-name" * .txt "بتصفية أي شيء ليس له امتداد" .txt ". -أنا العلم في إشارات xargs أن {} يمثل الترميز كل اسم ملف البخار.

يجد الأمر التالي الملفات المسماة الأساسية في أو أسفل الدليل / tmp وحذفها.

البحث عن / tmp -name core -type f -print | xargs / bin / rm -f

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

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

بدلا من ال -أنا الخيار يمكنك أيضا استخدام -أنا العلامة التي تحدد السلسلة التي يتم استبدالها بخط الإدخال في وسيطات الأمر كما في هذا المثال:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

يتم تعريف سلسلة الاستبدال باسم "{}". وهذا يعني أن أي تكرارات "{}" في وسيطات الأمر يتم استبدالها بعنصر الإدخال الذي تم إعادة توجيهه إلى args خلال عملية توجيه الإخراج. يمكّنك هذا من وضع عناصر الإدخال في مواضع معينة في وسيطات الأمر المطلوب تنفيذها (بشكل متكرر).