আরও কিছু অভিজ্ঞ ব্যবহারকারীদের জন্য, আমরা সবসময় টার্মিনালে আরও কঠিন না হয়ে আরও স্মার্ট কাজ করার নতুন উপায় খুঁজছি। xargs
একটি দরকারী কমান্ড যা দুটি কমান্ডের মধ্যে সেতু হিসাবে কাজ করে, একটির আউটপুট পড়া এবং অন্যটি পড়া আইটেমগুলির সাথে কার্যকর করা। কমান্ডটি সাধারণত পরিস্থিতিতে ব্যবহৃত হয় যখন একজন ব্যবহারকারী একটি প্যাটার্ন অনুসন্ধান করে, ফাইলগুলি অপসারণ এবং পুনঃনামকরণ এবং আরও অনেক কিছু করে। এখানে আমরা আপনাকে দেখাব কিভাবে xargs
ব্যবহার করতে হয় আপনার সুবিধার জন্য আদেশ.
xargs কি?
এর মৌলিক আকারে, xargs
স্ট্যান্ডার্ড ইনপুট (বা STDIN) থেকে তথ্য পড়ে এবং পঠিত আইটেমগুলির সাথে এক বা একাধিকবার একটি কমান্ড কার্যকর করে। অনেক সাধারণ প্রদর্শন আছে, কিন্তু এখানে একটি দেখায় যে আমি কি বলতে চাইছি।
xargs
থাকতে ls
চালান আমার ডকুমেন্ট ফোল্ডারে কমান্ড, আমি নিম্নলিখিত কমান্ডটি চালাব:
echo "Documents" | xargs ls
পাইপ অক্ষর |
xargs
এর জন্য STDIN হিসাবে তার আগে যা আসে তা পাইপ করা হচ্ছে .
আপনি দেখতে পারেন যে xargs
কোন সমস্যা ছাড়াই আমার ডকুমেন্ট ফোল্ডার পড়ে। এটি xargs
এর ক্ষমতার একটি উদাহরণ মাত্র আদেশ।
যখন xargs
কমান্ড বিভিন্ন কমান্ড লাইন ক্রিয়াকলাপে ব্যবহার করা যেতে পারে, find
এর সাথে ব্যবহার করলে এটি সত্যিই কাজে আসে আদেশ এই নিবন্ধে, আমরা xargs
কিভাবে বোঝার জন্য কিছু দরকারী উদাহরণ আলোচনা করি এবং find
একসাথে ব্যবহার করা যেতে পারে।
একাধিক ফাইল জড়িত অপারেশনগুলি
ধরুন আপনি একটি ডিরেক্টরিতে উপস্থিত সমস্ত পাঠ্য ফাইলে “ref.txt” এর বিষয়বস্তু অনুলিপি করতে চান। যদিও টাস্কটি অন্যথায় আপনাকে একাধিক কমান্ড চালানোর প্রয়োজন হতে পারে, xargs
কমান্ড, সাথে find
কমান্ড, এটা সহজ করে তোলে। আমি পরীক্ষা ডিরেক্টরি একটি দম্পতি আছে. একটিতে "test0.txt" রয়েছে, যেটিতে পাঠ্য রয়েছে এবং অন্য ডিরেক্টরিটিতে 10টি অন্যান্য পরীক্ষার ফাইল রয়েছে যার মধ্যে কোনো পাঠ্য নেই। আমি যদি test0.txt
এর বিষয়বস্তু নিতে চাই এবং অন্যান্য ডিরেক্টরির বাকি টেক্সট ফাইলগুলিতে এটি অনুলিপি করুন, আমি নিম্নলিখিত কমান্ডটি চালাব:
find ./test-dir1/ -name "*.txt" | xargs -n1 cp test0.txt
উপরে দেখানো কমান্ডটি বুঝতে, আসুন এটিকে দুটি ভাগে ভাগ করি।
প্রথম অংশটি হল find ./test-dir1/ -name "*.txt"
, যা "test-dir1" ডিরেক্টরিতে উপস্থিত সমস্ত .txt ফাইলগুলির জন্য অনুসন্ধান করে৷ আপনি এখানে যেকোন ডিরেক্টরি উল্লেখ করতে পারেন।
দ্বিতীয় অংশ, xargs -n1 cp test.txt
, প্রথম কমান্ডের আউটপুট (ফলে ফাইলের নাম) ধরবে এবং cp
-এর কাছে হস্তান্তর করবে (কপি) একের পর এক আদেশ। উল্লেখ্য যে -n
বিকল্পটি এখানে অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি xargs
নির্দেশ করে প্রতি এক্সিকিউশনে একটি আর্গুমেন্ট ব্যবহার করতে।
একসাথে মিলিত হলে, সম্পূর্ণ কমান্ড "test0.txt"-এর বিষয়বস্তুকে ডিরেক্টরির সমস্ত .txt ফাইলে কপি করবে।
অপারেশন যাতে প্রচুর আর্গুমেন্ট জড়িত থাকে
xargs
ব্যবহার করার অন্যতম প্রধান সুবিধা এটি একটি বড় সংখ্যক আর্গুমেন্ট পরিচালনা করার ক্ষমতা। উদাহরণস্বরূপ, একবারে প্রচুর সংখ্যক ফাইল মুছে ফেলার সময়, rm
কমান্ড কখনও কখনও একটি “আর্গুমেন্ট তালিকা খুব দীর্ঘ দিয়ে ব্যর্থ হবে " ত্রুটি. কারণ এটি কেবল যুক্তির এত দীর্ঘ তালিকা পরিচালনা করতে পারেনি। আপনি যে ফোল্ডারটি মুছতে চান তাতে আপনার অনেক বেশি ফাইল থাকলে এটি সাধারণত হয়।
ধরা যাক আপনার 75টি পিডিএফ আছে এবং আপনি সেগুলি মুছতে গিয়ে একটি ত্রুটি পাচ্ছেন।
এটি সহজে xargs
দিয়ে ঠিক করা যেতে পারে . এই সমস্ত ফাইল মুছে ফেলতে, নিম্নলিখিত কমান্ড ব্যবহার করুন:
find ./test-dir2/ -type f -name "*.pdf" -print | xargs rm -f
প্যাটার্ন অনুসন্ধান জড়িত অপারেশনগুলি
সফ্টওয়্যার ডেভেলপার এবং সিস্টেম অ্যাডমিনিস্ট্রেটররা কমান্ড লাইনে কাজ করার সময় প্রচুর প্যাটার্ন অনুসন্ধান করে। উদাহরণস্বরূপ, একজন বিকাশকারী একটি নির্দিষ্ট ভেরিয়েবল পরিবর্তন করে এমন প্রজেক্ট ফাইলগুলিকে দ্রুত দেখতে চাইতে পারেন, বা একটি সিস্টেম অ্যাডমিনিস্ট্রেটর একটি নির্দিষ্ট সিস্টেম কনফিগারেশন প্যারামিটার ব্যবহার করে এমন ফাইলগুলি দেখতে চাইতে পারেন। এই পরিস্থিতিতে, xargs
, সাথে find
এবং grep
, আপনার জন্য জিনিস সহজ করে তোলে।
উদাহরণ স্বরূপ, "maketecheasier" স্ট্রিং আছে এমন সমস্ত ".txt" ফাইল অনুসন্ধান করতে, নিম্নলিখিত কমান্ডটি চালান:
find ./ -name "*.txt" | xargs grep "maketecheasier"
এখানে আমার সিস্টেমে উত্পাদিত কমান্ডের আউটপুট।
কাট/কপি অপারেশন
Xargs
, find
সহ কমান্ড, একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরিতে ফাইলগুলির একটি সেট অনুলিপি বা সরাতেও ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, বর্তমান ডিরেক্টরি থেকে পূর্ববর্তী ডিরেক্টরিতে 10 মিনিটের বেশি পুরানো সমস্ত পাঠ্য ফাইল সরাতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
find . -name "*.txt" -mmin +10 | xargs -n1 -I '{}' mv '{}' ../
-I
কমান্ড লাইন বিকল্পটি xargs
দ্বারা ব্যবহৃত হয় একটি প্রতিস্থাপন-স্ট্রিং সংজ্ঞায়িত করার কমান্ড যা find
এর আউটপুট থেকে পড়া নামগুলির সাথে প্রতিস্থাপিত হয় আদেশ এখানে প্রতিস্থাপন-স্ট্রিং হল {}
, কিন্তু এটা কিছু হতে পারে. উদাহরণস্বরূপ, আপনি একটি প্রতিস্থাপন-স্ট্রিং হিসাবে "ফাইল" ব্যবহার করতে পারেন।
find . -name "*.txt" -mmin 10 | xargs -n1 -I 'file' mv 'file' ./practice
কীভাবে xargs জানাবেন কখন প্রস্থান করবেন
ধরুন আপনি বর্তমান ডিরেক্টরিতে উপস্থিত সমস্ত .txt ফাইলের বিবরণ তালিকাভুক্ত করতে চান। ইতিমধ্যে ব্যাখ্যা করা হয়েছে, নিম্নলিখিত কমান্ড ব্যবহার করে এটি সহজেই করা যেতে পারে:
find . -name "*.txt" | xargs ls -l
কিন্তু একটি সমস্যা আছে:xargs
কমান্ড ls
চালাবে find
হলেও কমান্ড কমান্ড কোনো .txt ফাইল খুঁজে পেতে ব্যর্থ হয়. নিম্নলিখিত একটি উদাহরণ.
তাই আপনি দেখতে পাচ্ছেন যে ডিরেক্টরিতে কোনো .txt ফাইল নেই, কিন্তু এটি xargs
থামেনি ls
চালানো থেকে আদেশ এই আচরণ পরিবর্তন করতে, -r
ব্যবহার করুন কমান্ড লাইন বিকল্প:
find . -name "*.txt" | xargs -r ls -l
উপসংহার
যদিও আমি এখানে xargs
ব্যবহারে মনোনিবেশ করেছি find
দিয়ে , এটি অন্যান্য অনেক কমান্ডের সাথেও ব্যবহার করা যেতে পারে। আপনার যদি একাধিক, জটিল কমান্ড থাকে যা আপনাকে কার্যকর করতে হবে, xargs
একটি খুব দরকারী টুল.
আপনি যদি xargs
ব্যবহার করার বিষয়ে আমাদের লেখাটি উপভোগ করেন লিনাক্সে কমান্ড, আমাদের কিছু অন্যান্য লিনাক্স সামগ্রী পরীক্ষা করে দেখুন, যেমন "ডিভাইসে কোনো স্থান অবশিষ্ট নেই" ত্রুটির সমাধান বা উবুন্টুর গতি বাড়ানোর বিষয়ে আমাদের গাইড।