আমি-প্রিন্টফ স্ক্রিপ্ট বুঝতে পারি না


0

আমি আরএইচইএল 5 স্ক্রিপ্টিংয়ের দায়িত্ব নিয়েছি এবং এই প্ল্যাটফর্ম বা বাশ স্ক্রিপ্টিং সম্পর্কে আমার কোনও প্রশিক্ষণ নেই। এখানে একটি স্ক্রিপ্ট রয়েছে যার একাধিক টুকরা রয়েছে এবং আমি কেবল দ্বিতীয় টুকরা সম্পর্কে জিজ্ঞাসা করব তবে আপনাকে প্রথমটিও দেখাব, কারণ আমার ধারণা এটি নীচে আমার প্রশ্নের সাথে সহায়তা করবে।

স্ক্রিপ্টের প্রথম অংশটি একটি নির্দিষ্ট সার্ভারে ব্যবহারকারীদের আউটপুট দেখায়:

cut -d : -f 1 /etc/passwd

আউটপুটটি এমন কিছু দেখবে:

root
bin
joe
rob
other...

দ্বিতীয় স্ক্রিপ্টের জন্য আমার উপরের স্ক্রিপ্ট থেকে তালিকাভুক্ত প্রতিটি অ্যাকাউন্ট পূরণ করতে হবে এবং চালানো উচিত। আমি যা সংগ্রহ করতে পারি, এবং ম্যান পৃষ্ঠাগুলি এবং অন্যান্য ওয়েব অনুসন্ধানগুলিতে আমার অনুসন্ধান থেকে, এটি বেরিয়ে যায় এবং কোনও ফাইল বা ডিরেক্টরিতে থাকা গ্রুপের মালিককে খুঁজে পায় এবং স্পষ্টতই অনন্য রেকর্ড সাজিয়েছে এবং সত্যই নিশ্চিত নয় - সুতরাং এটি আমার প্রশ্ন , নীচের লিপিটি আসলে কী করে? (মজার বিষয়টি হ'ল, আমি যদি উপরের আউটপুট থেকে প্রতিটি নাম প্লাগ করি তবে আমি মাঝে মাঝে একটি "ইউজারনেম ব্লাহ, ব্লা, ব্লাহ" বার্তা পাই না।)

findusername-printf %G | sort | uniq

উত্তর:


1

আপনি যদি findম্যান পৃষ্ঠাটি দেখুন, আপনি -printfবিকল্পটির বিবরণ পাবেন :

   -printf format
          True; print format on the standard output, interpreting `\' escapes
          and `%' directives...

আপনি যদি ম্যান পৃষ্ঠাটি আরও নীচে দেখুন তবে আপনি এর জন্য ডকুমেন্টেশনটি খুঁজে পাবেন %G:

          %G     File's numeric group ID.

সুতরাং, এটি একটি ডিরেক্টরিতে অন্তর্ভুক্ত সমস্ত ফাইল সন্ধান করে username(আপনার উদাহরণে) এবং সংখ্যার গোষ্ঠী আইডি প্রিন্ট করে যা সেগুলির মালিক। sortএটিতে পাইপ দেওয়া হয় , যা তাদের বর্ণসূত্র অনুসারে বাছাই করবে। এর ফলাফলগুলি sortপাইপ করা uniqহবে যা সদৃশ এন্ট্রিগুলি সরিয়ে দেবে।

সুতরাং এটি একটি নির্দিষ্ট ডিরেক্টরি ট্রিতে থাকা সমস্ত অনন্য গ্রুপ আইডির একটি তালিকা তৈরি করে।

লিখিত হিসাবে এটি ঠিক এটি করবে না, কারণ এখানে কোনও সীমানা প্রদানকারী নেই। আপনার যদি গ্রুপের মালিকানাধীন ফাইলগুলি থাকে 200এবং 100আউটপুটটি দেখতে এমন হয়:

100200

... যার অর্থ sortকেবলমাত্র একটি একক লাইন দেখবে এবং কিছুই করবে না।

এটির সমাধানের জন্য কেউ ফর্ম্যাট স্ট্রিংয়ে একটি নতুন লাইন যুক্ত করতে পারে:

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