কিভাবে বিভিন্ন যুক্তি দিয়ে বারবার একটি আদেশ কার্যকর করা যায়?


11

আমি উবুন্টুতে আছি আমি কিছু যুক্তি অনুলিপি করেছি (নিউলাইন দ্বারা পৃথক) এবং আমি এগুলি প্রিন্ট করার জন্য xsel ব্যবহার করতে পারি

$ xsel
arg1
arg2
arg3
arg4
...

এখন, আমি এই আর্গুমেন্টগুলির প্রত্যেকটি অন্য কমান্ডের জন্য ব্যবহার করতে এবং যুক্তিটি যতবার ততবার প্রয়োগ করতে চাই।

তাই চেষ্টা করেছি

$ xsel | mycommand "constantArgument" $1

তবে mycommandএটি শুধুমাত্র প্রথম যুক্তির জন্য কার্যকর করা হয়েছিল । আমি কীভাবে প্রতিটি যুক্তির জন্য এটি সম্পাদন করতে পারি?


মাইক কম্যান্ডে একাধিক যুক্তি রয়েছে তা সত্য প্রতিফলিত করতে প্রশ্ন সম্পাদনা করেছেন।
ওয়েস

উত্তর:


12

আপনি সহজভাবে ব্যবহার করতে পারেন xargs

xsel | xargs -n1 echo mycommand 

-n1 মাইকম্যান্ডের জন্য একটি আর্গুমেন্ট, তবে এটি কেবল শুকনো রান, এটি কী চালানো হবে তা চালিয়ে দেবে, এটি সরিয়ে দেওয়ার জন্য echo

ধ্রুবক আর্গুমেন্টের জন্য

xsel | xargs -I {} -n1 echo mycommand "constantArgument" {}

যদি "মাইকম্যান্ড" xsel এর মধ্যে একটি মাত্র যুক্তি রয়েছে তার মধ্যে একাধিক যুক্তি প্রত্যাশা করে তবে কী হবে?
ওয়েস

xsel | xargs -n1 echo mycommand -more-arg
রাহুল পাতিল

xsel | xargs -n2 echo mycommandআদেশ অনুসারে দুটি যুক্তি
রাহুল পাতিল

7
xsel | while read line; do mycommand "$line"; done

বা অনুরূপ কিছু। আপনি এটিও ব্যবহার করতে পারেন xargsযা কমান্ড লাইন আর্গুমেন্টগুলির হেরফেরের জন্য একটি খুব শক্তিশালী কমান্ড।


1

সামান্য অনুকূলিতকরণের জন্য:

printf "${CMD} %s ${ARG2}\n" `xsel` | sh -n

-noexecuteপতাকাটি কীভাবে কাজ করে তা দেখে আপনি মুছে ফেলতে পারেন ।

যদি এটি আপনার পক্ষে কাজ করে তবে আপনি shপুরোপুরি ড্রপ করতে পারেন এবং পরিবর্তে এটি করতে পারেন :

. <<HERE /dev/stdin
    $(printf "${CMD} %s ${ARG2}\n" `xsel`)
HERE

বা দ্রুত:

printf "${CMD} %s ${ARG2}\n" `xsel` | . /dev/stdin

যে কোনও উপায়ে সহজ এবং এটি করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.