Как исключить набор пакетов при использовании «apt -get remove» с подстановочным знаком?

Пара одинарных кавычек не вкладывается друг в друга.

Измените вторые и третьи одинарные кавычки на двойные:

alias by='rsync -avh --omit-dir-times --delete --filter="protect.sync" /media/blueray/Data/_Work/ /media/blueray/Data/_CloudYandex/'
1
28.06.2020, 17:45
2 ответа

Что бы я сделал:

sudo apt-get remove --purge $(
    dpkg -l | awk '$1 == "ii" && /php7/ && !/php7\.0/{print $2}'
)

Чтобы передать переменные в , используйте переключатель -v:

EXCLUDE_VERSION='php7.0'
awk -v exv="$EXCLUDE_VERSION" '$1 == "ii" && /php7/ && $2 !~ exv{print $2}'
1
18.03.2021, 23:24

Ваше регулярное выражение выглядит некорректно. Он соответствует именам пакетов, содержащим (, не обязательно начинающимся с )"php7", плюс еще один произвольный символ ("." )за которым следует произвольное количество символов, не являющихся ни одним из следующих :p, h, 7,., 0.

Вместо этого вам, вероятно, понадобится следующее регулярное выражение:

sudo apt-get -y remove --purge '^php7\.[^0]'

Это соответствует «php7». в начале (^ )имени пакета плюс любой символ, кроме 0. Могут следовать дополнительные символы, но нам не нужно их учитывать.

2
18.03.2021, 23:24

Теги

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