ذكري المظهر

Xargs الأمر في لينكس

Busybox - 25- commands whoami, xargs, xz, xzcay , yes, zcat

Busybox - 25- commands whoami, xargs, xz, xzcay , yes, zcat

جدول المحتويات:

Anonim

تتيح لك الأداة المساعدة xargs إنشاء أوامر من الإدخال القياسي وتنفيذها. وعادة ما تستخدم في تركيبة مع الأوامر الأخرى من خلال الأنابيب.

مع xargs ، يمكنك توفير إدخال قياسي كوسيطة إلى أدوات سطر الأوامر مثل mkdir و rm .

في هذا البرنامج التعليمي ، سنغطي أساسيات استخدام أمر xargs .

كيفية استخدام لينكس xargs القيادة

يقرأ xargs الوسائط من الإدخال القياسي ، مفصولة بمسافات فارغة أو خطوط جديدة ، وينفذ الأمر المحدد باستخدام المدخلات كوسائط الأمر. إذا لم يتم توفير أي أمر ، يكون الإعداد الافتراضي هو /bin/echo .

بناء جملة الأمر xargs كما يلي:

xargs]

سيكون المثال الأساسي لاستخدام xargs هو تمرير عدة سلاسل مفصولة بمسافة بيضاء باستخدام توجيه إلى xargs وتشغيل أمر يستخدم هذه السلاسل كوسائط.

echo "file1 file2 file3" | xargs touch

في المثال أعلاه ، نقوم بتوصيل المدخلات القياسية بـ xargs ، ويتم تشغيل الأمر touch لكل وسيطة ، مما يؤدي إلى إنشاء ثلاثة ملفات. هذا هو نفسه كما لو كنت تعمل:

touch file1 file2 file3

كيفية عرض القيادة والمطالبة المستخدم

لطباعة الأمر على الجهاز قبل تنفيذه ، استخدم الخيار -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

اكتب y أو Y لتأكيد الأمر وتشغيله:

touch file1 file2 file3 ?…y

هذا الخيار مفيد عند تنفيذ الأوامر التدميرية.

كيفية الحد من عدد الحجج

بشكل افتراضي ، يتم تحديد عدد الوسائط التي تم تمريرها إلى الأمر بواسطة حد النظام.

يحدد الخيار -n ( -n --max-args ) عدد الوسائط التي سيتم تمريرها إلى الأمر المحدد. xargs بتشغيل الأمر المحدد عدة مرات حسب الضرورة حتى يتم استنفاد جميع الوسائط.

في المثال التالي ، يقتصر عدد الوسائط التي يتم قراءتها من الإدخال القياسي على 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

كما ترون من الناتج المطوّل أدناه ، يتم تنفيذ الأمر touch بشكل منفصل لكل وسيطة:

touch file1 touch file2 touch file3

كيفية تشغيل أوامر متعددة

لتشغيل أوامر متعددة باستخدام xargs ، استخدم الخيار -I . يعمل عن طريق تحديد replace-str بعد الخيار -I ويتم replace-str كافة تكرارات replace-str استبدال مع وسيطة تمريرها إلى xargs.

سيقوم المثال xargs التالي بتشغيل أمرين ، أولاً سينشئ الملفات باستخدام touch ، ثم يقوم ls الملفات باستخدام الأمر ls :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

خيار شائع replace-str هو % . ومع ذلك ، يمكنك استخدام عنصر نائب آخر ، على سبيل المثال ، ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

كيفية تحديد محدد

استخدم الخيار -d ( -d --delimiter ) لتعيين محدد مخصص ، والذي يمكن أن يكون إما حرفًا --delimiter أو تسلسل هروب يبدأ بـ \ .

المثال التالي الذي نستخدمه كمحدد:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

كيفية قراءة العناصر من الملف

يمكن للأمر xargs أيضًا قراءة العناصر من ملف بدلاً من الإدخال القياسي. للقيام بذلك ، استخدم الخيار -a ( --arg-file ) متبوعًا باسم الملف.

في المثال التالي ، سيقرأ الأمر xargs ملف ips.txt اتصال كل عنوان IP.

ips.txt

8.8.8.8 1.1.1.1

نحن نستخدم أيضًا الخيار -L 1 ، الذي يرشد xargs لقراءة سطر واحد في ذلك الوقت. إذا تم حذف هذا الخيار ، فإن xargs سوف تمرر جميع عناوين IP إلى أمر ping واحد.

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

باستخدام xargs مع find

غالبًا ما يتم استخدام xargs بالاقتران مع الأمر find . يمكنك استخدام البحث للبحث عن ملفات محددة ثم استخدام xargs لتنفيذ عمليات على تلك الملفات.

لتجنب المشكلات المتعلقة بأسماء الملفات التي تحتوي على أسطر جديدة أو أحرف خاصة أخرى ، استخدم دائمًا خيار find -print0 ، الذي يتسبب في find على طباعة اسم الملف الكامل متبوعًا بحرف فارغ. يمكن تفسير هذا الإخراج بشكل صحيح بواسطة xargs باستخدام الخيار -0 ، (- --null ).

في المثال التالي ، سوف يقوم find بطباعة الأسماء الكاملة لجميع الملفات داخل دليل xargs وسوف تمر xargs في مسارات الملفات إلى الأمر rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

باستخدام xargs لتقليص أحرف بيضاء

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

echo " Long line " | xargs

Long line

يمكن أن يكون هذا مفيدًا عند مقارنة السلاسل في البرامج النصية shell.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

استنتاج

xargs هي أداة مساعدة لسطر الأوامر على نظام Linux تتيح لك إنشاء وتنفيذ الأوامر.

لمزيد من المعلومات التفصيلية حول كل خيار xargs ، اقرأ صفحة xargs man.

xargs المحطة