Bagaimana cara mendaftar kedua program yang datang dengan distribusi saya dan yang saya instal secara manual?
Bagaimana cara mendaftar kedua program yang datang dengan distribusi saya dan yang saya instal secara manual?
Jawaban:
Itu tergantung pada distribusi Anda.
dpkg -l
rpm -qa
pkg_info
equery list
ataueix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
Semua ini akan menampilkan paket daripada program . Jika Anda benar-benar ingin daftar program, Anda mungkin ingin daftar executable di Anda $PATH
, yang dapat dilakukan seperti menggunakan bash's compgen
:
compgen -c
Atau, jika Anda tidak memiliki 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
.
Menjawab bagian kedua dari pertanyaan (tidak ada yang benar-benar ditambahkan ke jawaban Chris untuk bagian pertama) :
Umumnya tidak ada cara daftar program yang diinstal secara manual dan komponennya. Ini tidak direkam di mana pun jika Anda tidak menggunakan manajer paket. Yang bisa Anda lakukan adalah menemukan binari di lokasi standar (seperti yang disarankan Chris) dan dengan cara yang sama, tebak dari mana beberapa perpustakaan atau beberapa halaman buku panduan, dll. Berasal. Itu sebabnya, jika memungkinkan, Anda harus selalu menginstal program menggunakan manajer paket Anda .
Program harus dapat dijangkau melalui PATH, jadi cukup daftarkan semuanya di jalur:
ls ${PATH//:/ }
Harapkan hasil sekitar 3k-4k program.
Untuk mengecualikan minoritas kemungkinan positif palsu, Anda dapat memperbaiki pendekatan:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
Itu tidak membuat perbedaan bagi saya.
$PATH
, dll).
Semua jawaban lain (sejauh ini) berhubungan dengan paket dan binari. Jika maksud Anda "aplikasi desktop", yang muncul di menu mulai Anda, Anda dapat mencoba:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
Lebih banyak solusi dalam pertanyaan lain .