Як перерахувати програми, які постачаються разом із моїм дистрибутивом, і ті, які я встановив вручну?
Як перерахувати програми, які постачаються разом із моїм дистрибутивом, і ті, які я встановив вручну?
Відповіді:
Це залежить від вашого розповсюдження.
dpkg -l
rpm -qa
pkg_info
equery list
абоeix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
Все це перелічить пакунки, а не програми . Якщо ви справді хочете перелічити програми, ви, ймовірно, хочете перерахувати виконувані файли у вашому $PATH
, що можна зробити так, використовуючи bash's 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}' -
Більше рішень в іншому питанні .