অক্সে xargs -d এর প্রতিস্থাপন


22

লিনাক্সে আপনি চারটি ভিন্ন সার্ভারের বিরুদ্ধে ক্রমানুসারে নাম সহ xargs -d,দ্রুত hostnameকমান্ডটি চালাতে ব্যবহার করতে পারেন :

echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname

দেখে মনে হচ্ছে ওএসএক্স xargs কমান্ড ডিলিমিটার প্যারামিটার সমর্থন করে না। আপনি কি একই ফলকে ভিন্ন বিন্যাসিত echo, বা অন্য কোনও কমান্ড-লাইন ইউটিলিটির মাধ্যমে অর্জন করতে পারবেন ?

উত্তর:


11

কেমন:

echo {1..4} | xargs -n1 -I{} ssh root@www{}.example.com hostname

থেকে man xargs:

-n number
Set the maximum number of arguments taken from standard input for each invocation of utility.

1
মানগুলিতে স্পেস, লাইনফিড বা ট্যাব থাকতে পারে তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন printf 'a\0a' | xargs -0 -n1 echo
Lri

45

বিকল্পভাবে, আপনি সর্বদা হোমব্রিউ এবং জিএনইউ প্যাকেজের xargsমাধ্যমে জিএনইউ ইনস্টল করতে পারেন ।findutils

হোমব্রিউ ইনস্টল করুন:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

নির্দেশাবলী অনুসরণ করুন. তারপরে Findutils ইনস্টল করুন:

brew install findutils

এটি আপনাকে জিএনইউ xargsহিসাবে দেবে gxargs, এবং আপনি জিএনইউ / লিনাক্স থেকে অভ্যস্ত সিনট্যাক্সটি ব্যবহার করতে পারেন। ওএস এক্স-তে বিভিন্ন বিএসডি সহযোগী রয়েছে বা যেমন, ফাইন্ডুইলস প্যাকেজে পাওয়া অন্যান্য বেসিক কমান্ডগুলির ক্ষেত্রেও এটি একই রকম হয় gfindorglocategupdatedb


ধন্যবাদ! আমি এটি করেছি, তারপরে আমার .zshrc(ইনস্টলেশন আউটপুটে বর্ণিত হিসাবে) যুক্ত করা হয়েছে যাতে আমার gউপসর্গটি ব্যবহার করতে হবে না ।
15:25

2

আপনি যদি এটি সমান্তরালভাবে চালাতে চান তবে জিএনইউ সমান্তরাল ব্যবহার করুন:

parallel ssh root@www{}.example.com hostname ::: {1..4}

1

আপনি trওএসএক্সে কমাগুলিকে নতুন লাইনে রূপান্তর করতে এবং প্রতিটি আইটেমের মাধ্যমে নিম্নরূপে অঙ্কিত করতে জার্গস ব্যবহার করতে পারেন:

echo -n 1,2,3,4 | tr -s ',' '\n' | xargs -I{} ssh root@www{}.example.com hostname
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.