как проверить, что PPA уже добавлен в список источников apt в скрипте bash

Кто-нибудь знает, как проверить, что PPA уже добавлен в мою систему, прежде чем я добавлю его с помощью команды add-apt-repository в shell script.

Это было бы очень полезно.

Спасибо.

9
задан 24.04.2020, 00:55

3 ответа

Вы можете сделать что-то вроде этого:

the_ppa=...  # set appropriately

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

Примечания:

  • grep успешно завершится, если найдет совпадение
  • ! это отменяет, поэтому команды будут выполняться, если не найдено совпадений = ppa не добавлено
  • Флаг -q делает grep тихим , поэтому он не печатает совпадающие линий. Это был бы просто шум, нам нужно только знать, есть ли совпадение или нет, для которого код выхода идеален
  • Префикс ^deb .* должен убедиться, что совпадающая строка начинается с deb, исключить закомментированные строки
0
ответ дан 24.04.2020, 00:56
  • 1
    Как оказалось, это найдет ppas, которые были прокомментированы, но я хочу найти PPAs, которые не были прокомментированы, и @Ten-Coins отвечают, делает это. – Jan A 24.04.2020, 00:56

Откройте свой терминал и введите эту команду

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep fogger

замените fogger на имя PPA.

enter image description here

0
ответ дан 24.04.2020, 00:57
  • 1
    I' ll тестируют это с если оператор позже в тот день. Извините за downvote. Я не должен читать такие сообщения поздно вечером. Я предполагаю, что это должно работать и ответит позже, если я протестировал команду. – Mohammed Elhag 24.04.2020, 00:57
  • 2
    хороший видеть, что frogger все еще жив, я предполагаю, что grep не является правом soluthion для если оператор в рамках сценария оболочки – Bergi 24.04.2020, 00:58
  • 3
    Вы можете поле поиска с awk также. довольно быстрее. – Carlos Muentes 24.04.2020, 00:58
  • 4
    I' m не знакомый с awk, но если у Вас есть решение don' t смущаются отправлять Ваш ansawre и получать Ваше повторение. Ps. Мне нравятся лайнеры в значительной степени – Mohammed Elhag 24.04.2020, 00:59
  • 5
    поскольку я - на каникулах can' t отправляют теперь с тестированием правильно. what' s это downvote для? – r1se 24.04.2020, 00:59

Удаление файлов list.save, исходников, убедитесь, что только строки deb и считайте их для «fogger» ppa:

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added
0
ответ дан 24.04.2020, 00:57
  • 1
    Это также находит deb строки, которые комментируются, начиная с # deb, и строки из файлов как foo-ppa.list.distUpgrade - который предназначается? – r1se 24.04.2020, 00:58

Теги

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