আমার বিতরণ এবং আমি ম্যানুয়ালি ইনস্টল করা উভয় প্রোগ্রামকে আমি কীভাবে তালিকাভুক্ত করব?
আমার বিতরণ এবং আমি ম্যানুয়ালি ইনস্টল করা উভয় প্রোগ্রামকে আমি কীভাবে তালিকাভুক্ত করব?
উত্তর:
এটি আপনার বিতরণের উপর নির্ভর করে।
dpkg -l
rpm -qa
pkg_info
equery list
বাeix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
এই সমস্ত প্রোগ্রামের পরিবর্তে প্যাকেজগুলি তালিকাভুক্ত করবে । আপনি যদি প্রোগ্রামগুলি সত্যই তালিকাভুক্ত করতে চান তবে আপনি সম্ভবত আপনার মধ্যে এক্সিকিউটেবলের তালিকা করতে চান যা বাশের ব্যবহারের মতো করা যেতে পারে :$PATH
compgen
compgen -c
অথবা, যদি আপনার না থাকে compgen
:
#!/bin/bash
IFS=: read -ra dirs_in_path <<< "$PATH"
for dir in "${dirs_in_path[@]}"; do
for file in "$dir"/*; do
[[ -x $file && -f $file ]] && printf '%s\n' "${file##*/}"
done
done
rpm -qa
dkpg -l | grep ^ii
।
প্রশ্নের দ্বিতীয় অংশের উত্তর দেওয়া ( প্রথম অংশের জন্য ক্রিসের উত্তরে সত্যিই কিছু যুক্ত করার দরকার নেই ) :
সেখানে সাধারণত হয় কোন ম্যানুয়ালি ইনস্টল করা প্রোগ্রামের এবং তাদের উপাদান তালিকা প্রণালী। আপনি যদি প্যাকেজ পরিচালক ব্যবহার না করেন তবে এটি কোথাও রেকর্ড করা হয় না। আপনি যা করতে পারেন তা হ'ল স্ট্যান্ডার্ড লোকেশনগুলিতে বাইনারিগুলি খুঁজে পাওয়া (যেমন ক্রিসের পরামর্শ দেওয়া হয়েছিল) এবং একইভাবে, অনুমান করুন যে কোনও পাঠাগার বা কিছু ম্যানুয়াল পৃষ্ঠা ইত্যাদি কোথা থেকে এসেছে। এ কারণেই, যখনই সম্ভব, আপনার প্যাকেজ ম্যানেজারটি ব্যবহার করে সর্বদা প্রোগ্রাম ইনস্টল করা উচিত ।
প্রোগ্রামগুলি PATH এর মাধ্যমে অ্যাক্সেসযোগ্য হওয়া উচিত, সুতরাং কেবলমাত্র সমস্ত কিছু তালিকাতে করুন:
ls ${PATH//:/ }
প্রায় 3k-4k প্রোগ্রামের ফলাফল আশা করে।
মিথ্যা ধনাত্মক সম্ভাব্য সংখ্যালঘু বাদ দেওয়ার জন্য, আপনি পদ্ধতির পরিমার্জন করতে পারেন:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
এটি আমার জন্য কোনও পার্থক্য তৈরি করেনি।
$PATH
ইত্যাদি)।
অন্যান্য সমস্ত উত্তর (এখনও অবধি) প্যাকেজ এবং বাইনারিগুলির সাথে সম্পর্কিত। যদি আপনি "ডেস্কটপ অ্যাপ্লিকেশন" বলতে চান তবে এটি আপনার সূচনা মেনুতে প্রদর্শিত হয়, আপনি চেষ্টা করতে পারেন:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
আরো সমাধানের আরেকটি প্রশ্ন ।