Ответы:
По этой теме :
Для просмотра списка установленных пакетов:
dpkg --list | wc --lines
Чтобы увидеть, установлен ли пакет:
dpkg --list | grep package
dpkg -l | grep -c '^ii'
Существуют тонкие варианты, например, dpkg -l | grep -c '^?i'
если вы хотите включить пакеты, которые установлены, но удаление которых вы запросили. Другой способ
aptitude search '~i' |wc -l
Вы даже можете заглянуть прямо в базу данных dpkg:
sh -c 'set /var/lib/dpkg/info/*; echo $#'
Этот включает пакеты, которые не установлены, но у которых есть файлы конфигурации; Вы можете перечислить их с dpkg -l | grep '^rc'
.
Я использовал это:
dpkg --get-selections | wc --lines
Это даст вам количество установленных пакетов.
Если вы хотите узнать, установлен ли конкретный пакет, используйте:
dpkg --get-selections | grep <package>
Я полагаю, что это решит жалобу Жиля о включении других неустановленных пакетов .
Если вам нужно точное количество пакетов, вам не следует подсчитывать строки заголовка, выводимые по dpkg-query -l
, поэтому вам нужен шаблон для соответствия строк, начинающихся с ii
. Следующая строка содержит количество строк, начинающихся с, ii
и, следовательно, количество установленных пакетов:
dpkg-query -l | grep "^ii" | wc -l
Это дает тот же результат, что и
dpkg --get-selections | grep "[[:space:]]install" | wc -l
Шаблон grep во второй команде игнорирует строки, содержащие строку «deinstall» в выходных данных dpkg --get-selections
.
Для instace вы можете сделать это:
dpkg-query -l | nl | tail -1 | awk '{print $1}'
nl | tail -1 | awk '{print $1}'
будет сообщать о количестве строк на входе (кроме случаев, когда нет ввода, он ничего не скажет вместо сообщения 0
) - но почему бы вы порекомендовали такой кладж, когда другие ответы уже используются wc -l
?
rc
неустановленные пакеты (например, (неустановленные, но с сохраненными конфигурационными файлами)) в ваш счет.