sudo apt-get remove ^k3b대신 사용하십시오 . 패키지를 설치하거나 제거 할 때 *종종 위험하고 거의 필요하지 않습니다. 당신이 *그것을 사용한다면 , 당신은 그것을 인용해야하지만 , 당신이 의도 한 것보다 훨씬 더 많은 패키지를 선택하는 경향 이 경로 결과 확장 의 영향이 아닌 방법의 결과 와 그것을 해석 하기 때문에 더 안전 하지는 않습니다 .aptapt-get
- 심지어 의 안전한 사용은
* 있습니다 종종 불필요한 .
- 안전하지 않은 사용 은 잔인 합니다. 제거
k3b*포함하는 모든 패키지을 제거합니다 k3 어디서나 이름 (그와 같은 패키지에 따라 모든 패키지)에. 오타가 아닙니다. 포함 k3하지 않아도 충분합니다 b. 왜냐하면 b*"0 이상"을 의미 하기 때문 b입니다.
당신이 실행하는 경우 apt또는 apt-get로 install, remove또는 purge액션, 이후의 각 인수는 처음으로 1 개별 패키지의 이름으로 해석했다. 정확한 이름을 가진 패키지가 존재하면 해당 작업이 수행됩니다.
거기에 그러한 패키지 없으며, 경우 apt및 apt-get인수 공통의 포함 여부를 확인합니다 정규 표현식 메타 문자를 2 . , ?, +,* , |, \[, ^, 또는$ . 그렇지 않은 경우 완료된 것입니다. 패키지가 없습니다.
이 경우 않는 그 문자를 포함, 다음은 정규 표현식으로 처리하고와 일치합니다 어떤 부분 어떤 패키지 이름의. 전체 이름과 일치하지 않아도됩니다. 다른 사람들이 말했듯 *이 정규 표현식 *에서 글로브 와 같은 것을 의미하지는 않습니다 . ?그렇지 않습니다. 정규식에서 :
*이전 항목 이 정확히 한 번이 아닌 한 번만 포함하거나 한 번만 포함 하여 여러 번 나타날 수 있습니다.
?이전 항목을 선택 사항으로 만듭니다. 즉 , 0 번 또는 1 번 나타날 수 있습니다.
apt-get (8) ( man apt-get)는 말합니다 :
주어진 표현식과 일치하는 패키지가없고 표현식에 '.', '?'중 하나가 포함 된 경우 또는 '*'인 경우 POSIX 정규식으로 가정되며 데이터베이스의 모든 패키지 이름에 적용됩니다. 그런 다음 일치하는 항목이 설치되거나 제거됩니다. 일치는 하위 문자열로 수행되므로 'lo. *'는 'how-lo'및 'lowest'와 일치합니다. 이것이 바람직하지 않은 경우 정규식을 '^'또는 '$'문자로 고정하거나보다 구체적인 정규식을 작성하십시오.
맨 페이지 만 언급 ., ?그리고 *있지만, 그것은 불완전 로, +, |, [, ^, 및 $도하게하기에 충분하다 apt-get또는 apt정규 표현식으로 패턴을 해석한다. 삼
당신은 어떤 문자의 수와 일치 할 수 있지만 .*- 아니 단지 *는에 나타나는 경우 알려줄까요에만이 필요 중간 정규 표현식의. 패턴은 패키지 이름의 하위 문자열과 일치하므로 패턴의 끝 (또는 시작)에서 의미가 없습니다.
맨 페이지에 및가 언급 ^되어$ 있습니다. 이 (특히 ^)를 사용하기 위해 안전하고 효율적인 패턴을 작성하는 열쇠 install, remove또는 purge조치 apt나 apt-get.
^전체 문자열 의 시작 부분 에 정규식을 고정 합니다. ^k3b이름이 모든 패키지 선택 시작 과를 k3b.
$전체 문자열 의 끝에 정규식을 고정 합니다. k3b$이름이 모든 패키지 선택 것이다 끝 과를 k3b.
따라서이 명령을 사용하여 패키지를 안전하게 제거 할 수 있습니다.
sudo apt-get remove ^k3b
마지막으로, 언급 한 특정 경우에 두 이름을 모두 직접 전달할 수도 있습니다.
sudo apt-get remove k3b k3b-data
그런 다음이 모든 복잡성을 피하십시오! (이것에 ^익숙해지면 간단하게 고정 할 수 있습니다.) 또는 괄호 확장을 사용 하면 쉘이 위의 명령으로 확장됩니다.
sudo apt-get remove k3b{,-data}
한 두 가지 예외가 여기에있다 : (a)는 일부 옵션 (예 :, -f, --purge) 인정되며, (b)는 상기 나타나는 몇 가지 문장 부호 끝 달리 할 수있는 작업을 수행하기 위해 패키지 이름으로 간주 될 인수의 수행 된 작업을 변경하는 데 사용됩니다 (예 : 패키지 대신 작업을sudo apt install ubuntu-desktop^ 설치 하고 끝에 표시 될 때 ).^
2 다른 정규식 메타 문자가 존재합니다. 예를 들어, \모든 정규식의 방언에서 지원되며 일반적으로 사용됩니다. ., ?, +, *, |, [, ^, 및 $단지 APT 개발자들이 정규 표현식으로 해석 발생하게 결정 메타 될 일이 (라는 이름의 정확한 패키지로 해결 한 후 실패했습니다).
3 이를 확인하는 가장 쉬운 방법 -s은 위에서 설명한 옵션을 사용하여 이러한 패턴으로 설치 또는 제거를 시뮬레이션하는 것입니다 . 예를 들어, running apt -s install ^virtualbox은 sudo apt install ^virtualbox패키지 관리자가 누구의 이름으로 시작하는지 알고있는 모든 패키지를 설치하려고 시도 함을 보여줍니다 virtualbox. 그러나이 동작은 소스 코드 를 검사 하여 확인할 수도 있습니다 . 의 CacheSetHelper::PackageFromRegEx기능을 확인하십시오 cacheset.cc.