Use sudo apt-get remove ^k3b
. Quando você instala ou remove pacotes, *
costuma ser perigoso e raramente é necessário. Se você usa *
, você deve citá-lo, mas isso não o torna mais seguro, porque sua tendência de selecionar muito mais pacotes do que você pretende é o resultado da maneira como apt
e apt-get
interpreta e não um efeito da expansão do nome do caminho .
- Até mesmo os usos seguros de
*
são muitas vezes desnecessário .
- Os inseguros usam são brutais . Remover
k3b*
remove todo pacote que contém k3
em qualquer lugar em seu nome (e todo pacote que depende de tal pacote). Isso não é um erro de digitação - contendo k3
é suficiente, mesmo sem o b
, porque b*
significa "zero ou mais b
s".
Quando você executa apt
ou apt-get
com a ação install
, remove
ou purge
, cada O argumento subsequente é o primeiro 1 interpretado como o nome de um pacote individual. Se existir um pacote com esse nome exato, a ação será executada para ele.
Se não houver esse pacote, apt
e apt-get
verificarão se o argumento contém alguma das expressões comuns metacaracteres 2 .
, ?
, +
, *
, |
, \[
, < href="http://www.regular-expressions.info/anchors.html"> ^
ou $
. Se não, está feito - nenhum pacote foi encontrado.
Se contiver qualquer um desses caracteres, ele será tratado como uma expressão regular e será comparado a qualquer parte de qualquer nome de pacote. Não precisa corresponder ao nome inteiro. Como outros disseram, *
em uma expressão regular não significa a mesma coisa que *
em uma glob. ?
também não. Em uma expressão regular:
-
*
permite que o item anterior apareça qualquer número de vezes - incluindo apenas uma vez ou não - em vez de exatamente uma vez.
-
?
torna o item anterior opcional - ou seja, permite que ele apareça zero ou uma vez.
apt-get (8) ( man apt-get
) diz:
Se nenhum pacote corresponder à expressão especificada e a expressão contiver
um de '.', '?' ou '*' então é assumido como sendo um POSIX regular
expressão, e é aplicado a todos os nomes de pacotes no banco de dados.
Qualquer correspondência é então instalada (ou removida). Note que a correspondência é
feito por substring, então 'lo. *' combina 'how-lo' e 'lowest'. Se isso é
não desejado, ancorar a expressão regular com um caractere '^' ou '$',
ou crie uma expressão regular mais específica.
A página do manual menciona apenas .
, ?
e *
, mas está incompleta , pois +
, |
, [
, ^
e $
também são suficientes para permitir que apt-get
ou apt
interpretem o padrão como uma expressão regular. 3
Embora você possa combinar qualquer número de caracteres com .*
- não apenas *
- você só precisa disso se aparecer no meio da sua expressão regular. Como o padrão é comparado com qualquer substring de um nome de pacote, é inútil no final (ou no início) do padrão.
O manpage menciona ^
e $
. Esses (especialmente ^
) são essenciais para criar padrões seguros e eficientes para uso com as ações install
, remove
ou purge
em apt
ou apt-get
.
-
^
ancora uma expressão regular no início de toda a cadeia. ^k3b
seleciona todos os pacotes cujos nomes iniciam com k3b
.
-
$
ancora uma expressão regular no fim de toda a cadeia. k3b$
selecionaria todos os pacotes cujos nomes terminam com k3b
.
Portanto, você pode usar este comando para remover os pacotes com segurança:
sudo apt-get remove ^k3b
Por fim, no caso específico que você mencionou, é melhor passar os dois nomes:
sudo apt-get remove k3b k3b-data
Então você evita toda essa complexidade! (Embora a ancoragem com ^
seja simples quando você estiver acostumado.) Ou use expansão da cinta , que seu shell expande no comando acima:
sudo apt-get remove k3b{,-data}
Existem duas exceções:
(a) algumas opções ) são reconhecidos, e
(b) alguns caracteres de pontuação que aparecem no
fim de um argumento que seria usado como um nome de pacote para executar a ação podem ser usados para alterar o que é feito (por exemplo,
-f
instala a
tarefa em vez do pacote e quando
--purge
aparece no final ).
2 Outros metacaracteres de expressões regulares existem. Por exemplo, sudo apt install ubuntu-desktop^
é suportado por todos os dialetos de expressões regulares e comumente usados. ^
, \
, .
, ?
, +
, *
, |
e [
são os metacaracteres que os desenvolvedores APT decidiram que acionariam a interpretação como uma expressão regular ( após a resolução, como um pacote exato chamado falhou).
3 A maneira mais fácil de verificar isso é simular a instalação ou a remoção com esse padrão, usando a opção ^
, conforme descrito acima. Por exemplo, executar $
mostra que -s
teria o efeito de tentar instalar todos os pacotes que o gerenciador de pacotes conhece, cujo nome começa com apt -s install ^virtualbox
. No entanto, esse comportamento também pode ser verificado com o exame do código-fonte . Verifique a função sudo apt install ^virtualbox
em virtualbox
.