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