что способное сценарием эквивалентно пользовательской команде “способный список - установленный”?

Я могу сделать эти команды приятно на командной строке моей Ubuntu 16.04 (гостеприимная) установка:

apt list --installed
apt list --installed | grep grep

Stdout получает результаты и также эту строку:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

При помещении этого в сценарий я предполагаю, что должен использовать что-то как "Кв. - добираются" или "способный кэш" - но не пробуя это ни один из него не поддерживает мои данные опции. Вместо этого я добираюсь:

E: Command line option --installed is not understood in combination with the other options

После удаления "-установленная" часть, я получаю это:

E: Invalid operation list

Который является вариантом инструмента командной строки Кв., которая должна использоваться для того, чтобы сделать этот запрос стабильным способом? (Я определенно надеюсь на вариант инструментов что проблема привычки те, которые "ПРЕДУПРЕЖДАЮТ": строка.)

1
задан 10 October 2019 в 11:46

1 ответ

Способность поиск пакета с настраивают форматирование.

При поиске пакетов со способностью, критерии поиска используются для ограничения поиска, в этом случае 'установленные' пакеты. Шаблон затем выполняется с помощью нечувствительного к регистру регулярные выражения (путем добавления '^' привязки '$' к шаблону, точное имя пакета может быть подобрано). С -F опция специализированная строка выходного формата может быть сформирована при помощи [1 112] %escapes.

Пример:

$ aptitude search '?narrow(?installed, "^grep$")' -F '%p (%v)' -q=2 --disable-columns
  grep (3.3-1)

(Пример сценария с короткими критериями поиска)

#!/bin/bash

read -r package_name package_version < <(aptitude search '~i^grep 

ссылка Критерия поиска:
   ? узкий () - Избранные пакеты, для которых единственная версия соответствует и фильтру и шаблону.
   ? установленный - Выбор установил пакеты.

заполнители Escape:
    %p - Производит название пакета.
    %v - Производит в настоящее время установленную версию пакета.

опции Aptitude :
   -F - Указывают формат, который должен использоваться для отображения вывода.
   -q - Подавляют все индикаторы хода выполнения. Предоставленный многократно делает вывод более тихим.
    - запрещать-столбцы - Эта опция заставляет поиск производить их результаты без любого специального форматирования.

Получают выборы пакета с [1 113] dpkg.

$ dpkg --get-selections grep
  grep                                            install

или

$ dpkg -l grep
  ii  grep           3.3-1        amd64        GNU grep, egrep and fgrep

(Пример сценария)

#!/bin/bash

if [[ $(dpkg --get-selections grep 2>&-) =~ .+[[:space:]]+install$ ]]; then
  echo Installed
fi

или

#!/bin/bash

if (( $(dpkg -l grep 2>&- | grep -c ^ii) == 1 )); then
  echo Installed
fi

Получают состояние пакета с [1 114] dpkg-запрос .

$ dpkg-query --showformat='${Package}\t${Version} (${db:Status-Status})\n' --show grep
  grep    3.3-1 (installed)

(Пример сценария)

#!/bin/bash

if [[ $(dpkg-query --showformat='${db:Status-Status}' --show grep 2>&-) == 'installed' ]]; then
  echo Installed
fi
-F '%p %v' -q=2 --disable-columns 2>&-) echo $package_name echo $package_version exit 0

ссылка Критерия поиска:
   ? узкий () - Избранные пакеты, для которых единственная версия соответствует и фильтру и шаблону.
   ? установленный - Выбор установил пакеты.

заполнители Escape:
    %p - Производит название пакета.
    %v - Производит в настоящее время установленную версию пакета.

опции Aptitude :
   -F - Указывают формат, который должен использоваться для отображения вывода.
   -q - Подавляют все индикаторы хода выполнения. Предоставленный многократно делает вывод более тихим.
    - запрещать-столбцы - Эта опция заставляет поиск производить их результаты без любого специального форматирования.

Получают выборы пакета с [1 113] dpkg.

$ dpkg --get-selections grep
  grep                                            install

или

$ dpkg -l grep
  ii  grep           3.3-1        amd64        GNU grep, egrep and fgrep

(Пример сценария)

#!/bin/bash

if [[ $(dpkg --get-selections grep 2>&-) =~ .+[[:space:]]+install$ ]]; then
  echo Installed
fi

или

#!/bin/bash

if (( $(dpkg -l grep 2>&- | grep -c ^ii) == 1 )); then
  echo Installed
fi

Получают состояние пакета с [1 114] dpkg-запрос .

$ dpkg-query --showformat='${Package}\t${Version} (${db:Status-Status})\n' --show grep
  grep    3.3-1 (installed)

(Пример сценария)

#!/bin/bash

if [[ $(dpkg-query --showformat='${db:Status-Status}' --show grep 2>&-) == 'installed' ]]; then
  echo Installed
fi
2
ответ дан 7 December 2019 в 13:14

Другие вопросы по тегам:

Похожие вопросы: