як перевірити, чи не додано PPA до списку влучних джерел у скрипті bash


11

Хтось знає, як перевірити, чи додано PPA до моєї системи, перш ніж я додаю його за допомогою add-apt-repositoryкоманди в shell script.

Це було б дуже корисно.

Дякую.

Відповіді:


11

Ви можете зробити щось подібне:

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

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, щоб виключити рядки, які закоментовані

Як виявилося, це знайде папи, які були прокоментовані, але я хочу знайти PPA, які не були прокоментовані, і відповідь @ Ten-Coins @ це робить.
Тайтай

2

Відкрийте свій термінал і введіть цю команду

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

замініть фоггер назвою PPA.

введіть тут опис зображення


1
приємно бачити, що Frogger все ще живий, я думаю, що grep не є правильним рішенням для заяви if у сценарії оболонки
Josh

Ви також можете шукати поле з awk. досить швидше.
rɑːdʒɑ

Я не знайомий з awk, але якщо у вас є рішення, не соромтеся опублікувати ансаур і отримати повторення. Пс. Мені дуже подобається один лайнер
Джош

оскільки я у відпустці не можу розміщувати зараз тестування належним чином. для чого це сутичка?
rɑːdʒɑ

Я перевірю це за допомогою заяви if цього дня. Вибачте за голосування. Я не міг читати такі пости пізно вночі. Я думаю, що це має спрацювати, і я відповім пізніше, якщо я перевірив команду.
Джош

0

Видаляючи список list.save файлів, джерел, забезпечте лише рядки дебюту і рахуйте їх за "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

Це також знаходить debрядки, які коментуються, починаючи з # deb, і рядки з файлів на кшталт foo-ppa.list.distUpgrade- це призначено?
Волкер Зігель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.