উত্তর:
/ ইত্যাদি / পাসডাব্লুডি ফাইলের সুন্দর আউটপুট জন্য ভাল উপায়:
$ column -nts: /etc/passwd
এখন আপনি এটি বাছাই করতে পারেন:
$ column -nts: /etc/passwd | sort
সর্বশেষ কলামে গোষ্ঠীর নামগুলি (কোনও বন্ধনী নেই):
$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort
n
বিকল্পটি পছন্দ হয়নি । column -ts: /etc/passwd
ভাল কাজ।
আপনার যদি মেশিনে রুট অ্যাক্সেস থাকে তবে আপনি নিম্নলিখিতগুলি করতে পারেন:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
ছায়া ফাইলটি পড়ার জন্য রুট হয়ে উঠুন। আপনার কেবলমাত্র রুট সুবিধার প্রয়োজন যদি আপনি ব্যবহারকারীর পাসওয়ার্ড সেট (মানব ব্যবহারকারী) আছে কিনা তা পরীক্ষা করতে চান, অন্যথায় আপনি কেবল cat /etc/passwd
পরিবর্তে এটি করতে পারেন sudo grep ...
:
sudo
কেবলমাত্র এমন ব্যবহারকারীদের দেখান যাদের পাসওয়ার্ড সেট রয়েছে:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
ব্যবহারকারী নাম অনুসারে বাছাই করুন:
sort
ব্যবহারকারীর নাম বাদে সমস্ত তথ্য বাতিল করুন:
cut -d: -f1
ব্যবহারকারীর নামগুলি দিয়ে পরীক্ষা করুন এবং গোষ্ঠীগুলির অনুক্রমের মাধ্যমে এটি সমৃদ্ধ করুন:
while read user; do id $user; done
কলামগুলিতে ইনপুট ফর্ম্যাট করুন:
column -ts' ,'
ফলাফলটি দেখতে vi ব্যবহার করুন:
vi '+set nowrap' -
এরকম কিছু চেষ্টা করুন:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
এর আউটপুটটি কিছুটা আলাদা, তবে আমি এই উত্তরের দুটি অংশকে এমন কিছুতে মিশ্রিত করার জন্য যা অনুশীলন হিসাবে পুরোপুরি পুরোপুরি ফিট করে তা পাঠকের কাছে অনুশীলন হিসাবে রেখেছি। (আপনি কি শুধু ভালোবাসেন না sed
?)
উবুন্টুতে এটি নিম্নরূপ হতে পারে:
/ ইত্যাদি / পাসডাব্লু থেকে সাতটি ক্ষেত্র 7 f1, f2 ..., $ f7 এ সঞ্চিত
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd
আমি করি এবং এটি আমার উদ্দেশ্যে কাজ করে এমন কিছু
ls /home
মঞ্জুর, এটি আপনাকে ব্যবহারকারীর একটি তালিকা দেয় না বরং ব্যবহারকারীর হোম ডিরেক্টরি এবং অতীতের ব্যবহারকারীর ডিরেক্টরিগুলির তালিকা দেয় তবে আপনি যে কমান্ডটি টার্মিনালটির অস্তিত্বহীন নয় সেই ব্যবহারকারীকে করতে চান এবং তা মুছে ফেলার ইঙ্গিত হতে পারে যে হোম ফাইলটিতে কোনও ব্যবহারকারী নেই বা এটি সরান না!
আমি ভেবেছিলাম এটি দিয়ে সহজ হবে join
, তবে যোগদানের ক্ষেত্রেjoin
ফাইলগুলি বাছাই করা দরকার । সুতরাং এটির জন্য (?) অস্থায়ী ফাইলগুলি সহ একটি workaround প্রয়োজন। আউটপুটটি ব্যবহারকারীকে বাছাই করা হয় এবং ব্যবহারকারী, গোষ্ঠী এবং গোষ্ঠী আইডি প্রদর্শন করে।
uag () {
TEMP_GROUPS=/var/tmp/sorted_groups
TEMP_USERS=/var/tmp/sorted_users
cat /etc/group | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
rm $TEMP_GROUPS $TEMP_USERS
}
এর সাথে একটি চরিত্র অন্যকে অনুবাদ করুন tr
; sort
একটি মূল ক্ষেত্র অনুসারে -k
, ফাইল করতে আউটপুট -o
; প্রথম ( -1
) এবং দ্বিতীয় ( -2
) ফাইলের ক্ষেত্রগুলির সাথে যোগ দিন, প্রথম ফাইলটিতে ( -o 1.1
) পাশাপাশি দ্বিতীয় ( ,2.1,2.3
) তে নির্দিষ্ট ক্ষেত্র আউটপুট করুন ।
/tmp
ভাল হবে, কারণ এফএইচএস বলে যে /var/tmp
রিবুটগুলিতে মুছা হবে না, যা আমাদের সত্যই প্রয়োজন হয় না।
cut
। বর্ণমালা জন্য, আছেsort
। আপনার যদি গোষ্ঠীর নামগুলির প্রয়োজন হয় তবে যোগদানের সাথে খেলুন (যা প্রকৃতপক্ষে কেবলমাত্র কলামগুলির একটি উপসেট দেখাতে সক্ষম হবে, বিটিডাব্লু)।