apt-cache는 패키지 이름 지정을 위해 어떤 패턴 일치를 허용합니까?

apt-cache는 패키지 이름 지정을 위해 어떤 패턴 일치를 허용합니까?

문제는 apt-cache외부 명령 에 관한 것입니다 search regex.

예를 들어, 별표 문자를 와일드카드로 사용할 수 있다는 것을 알고 있지만 apt-cache policy 'firefox*'다른 가능한 항목에 대한 문서를 찾을 수 없습니다. 파일 이름 확장자와 동일합니까? extglob스위치 같은 것도 있나요?

내가 해결하려는 실제 문제는 모든 패키지를 제외한 모든 것을 apt-cache policy표시하는 것입니다.'firefox*'-l10n-

답변1

패키지 이름은 문서에 설명된 대로 처리됩니다.~을 위한apt-get install(예, 명확하지 않습니다):

주어진 표현식과 일치하는 패키지가 없고 표현식에 '.', '?' 또는 '*' 중 하나가 포함되어 있으면 POSIX 정규 표현식으로 간주되어 데이터베이스의 모든 패키지 이름에 적용됩니다. 그런 다음 일치 항목을 설치(또는 제거)합니다. 일치는 하위 문자열로 수행되므로 "lo.*"는 "how-lo" 및 "lowest"와 일치합니다. 이러한 일이 발생하지 않도록 하려면 "^" 또는 "$" 문자를 사용하여 정규식을 고정하거나 보다 구체적인 정규식을 만드십시오.

엄밀히 말하면, 이 검사는 사용 가능한 패키지 이름에 대해 glob을 수행한 후에 수행됩니다. 따라서 먼저 패키지 사양에서 정확히 일치하는지 확인한 다음 glob 일치( ?및 사용 *)를 확인하고 아무것도 발견되지 않으면 패키지 사양을 확인합니다. ., ?, 또는 을 포함하는 경우 *정규식으로 해석됩니다. ( apt-cache policy 'firefo?'일치에 와일드카드만 사용하는 를 실행한 다음 apt-cache policy 'firefox?'마지막으로 정규식을 사용하는 를 실행 하여 와일드카드 동작을 볼 수 있습니다 .)

apt-cache policy 'firefox*'일치를 위해 glob을 사용하십시오. 정규식을 사용하여 강제로 일치시키려면 출력에서 ​​for를 apt-cache policy 'firefox.*'확인하여 표현식이 glob 또는 정규식으로 일치하는지 확인할 수 있습니다.mozilla-firefox

apt-cache search인수가 다음과 같기 때문에 정규식을 처리하도록 명시적으로 문서화되어 있습니다.언제나정규식으로 처리됩니다.

정규식에서 지원하는 유형을 고려하면 apt제외가 -l10n-불가능할 수 있습니다.이 답변더 알아보기.

관련 정보