خدایگان ترمینال لینوکس
@programming_tipsدرسنامه 33: دستور xargs – ارسال آرگومان به دستورات دیگر
این آموزش به دستور xargs در لینوکس میپردازد؛ ابزاری کاربردی که اجازه میدهد خروجی یک دستور به عنوان آرگومان به دستورات دیگر ارسال شود. xargs به ویژه زمانی مفید است که میخواهید روی مجموعهای از فایلها یا مقادیر پردازش انجام دهید و نمیخواهید از حلقهها یا اسکریپتهای پیچیده استفاده کنید.
دستور xargs چیست؟
دستور xargs برای دریافت ورودی استاندارد و تبدیل آن به آرگومان برای اجرای دستور دیگر استفاده میشود. به بیان ساده، خروجی یک دستور میتواند به ورودی دستور دیگری تبدیل شود و این کار را به شکل خودکار و کارآمد انجام میدهد.
ساختار پایهای xargs
فرمت کلی دستور xargs به شکل زیر است:
command1 | xargs command2
- command1: دستوری که خروجی تولید میکند
- xargs: دستور واسط که خروجی را به آرگومان تبدیل میکند
- command2: دستوری که روی آرگومانها اجرا میشود
مثال ساده: حذف فایلهای مشخص شده توسط دستور find:
find . -name "*.log" | xargs rm
این دستور تمام فایلهایی که پسوند .log دارند را پیدا کرده و با rm حذف میکند.
استفاده از گزینههای مفید
- -n: تعیین تعداد آرگومانهایی که در هر بار اجرا به دستور دوم ارسال میشود
echo "file1 file2 file3" | xargs -n 2 echo
خروجی به صورت دو آرگومان در هر خط نمایش داده میشود.
- -I: جایگزینی الگو با مقدار ورودی
echo "file1 file2" | xargs -I {} mv {} /backup/
در این مثال، {} با هر نام فایل جایگزین شده و به دستور mv ارسال میشود.
مدیریت فایلهایی با فاصله یا کاراکترهای خاص
برای جلوگیری از مشکل فایلهایی که نام آنها فاصله یا کاراکتر خاص دارند، میتوان از گزینه -0 استفاده کرد و ورودی را با find -print0 ترکیب کرد:
find . -name "*.txt" -print0 | xargs -0 rm
جمعبندی
دستور xargs ابزاری بسیار قدرتمند برای ارسال خروجی یک دستور به عنوان آرگومان به دستورات دیگر است. با استفاده از گزینههای مختلف، میتوان عملیات پیچیده روی مجموعهای از فایلها یا مقادیر را به راحتی و به صورت بهینه انجام داد.