На сервере под управлением Ubuntu 20.04 LTS я пытаюсь перечислить установленные ядра с помощью команды:
dpkg-query -W -f '${Package}\n' 'linux-image-[0-9]*'
, которая, согласно справочной странице, должна перечислять установленные пакеты, соответствующие шаблону. Однако вывод команды включает ядро версии, которые уже были удалены. Как я могу ограничить вывод ядрами, которые все еще установлены?
На странице руководства от 20.04 говорится: « все пакеты, соответствующие шаблону », который включает неустановленные пакеты. Он не претендует на ограничение вывода только установленными пакетами.
-W, --show [шаблон-имени-пакета ...] Как и в случае с параметром --list, будут перечислены все пакеты, соответствующие заданному шаблону. Однако вывод можно настроить с помощью параметра --showformat. Формат вывода по умолчанию дает одну строку на соответствующий пакет, каждая строка имеет имя (дополненное квалификатором архитектуры для тех же пакетов Multi-Arch) и установленную версию пакета , разделенных табуляцией.
Добавьте состояние пакета к вашему выводу
dpkg-query -W -f '$ {db: Status-Status} $ {Package} \ n' 'linux- image- [0-9] * '
Отфильтруйте вывод, используя поле состояния пакета. Все значения, кроме «не установлен», означают, что пакет установлен хотя бы частично.
dpkg-query -W -f '$ {db: Status-Status} $ {Package} \ n' 'linux-image- [0-9] *' | awk '$ 1! = "not-installed" {print}'
Ограничить вывод именем пакета
dpkg-query -W -f '$ {db: Status-Status} $ {Package} \ n' 'linux-image- [0-9] *' | awk '$ 1! = "not-installed" {print $ 2}'