페도라 모자문서설명하다:
5.2. 고급 검색
패키지 이름을 모르는 경우 검색을 사용하거나 옵션을 제공하십시오. 또는 yum 검색 옵션과 함께 와일드카드나 정규식을 사용하여 검색 기준을 넓힐 수 있습니다.
글쎄요, 처음에는 함께 사용할 수 있는 알려진 정규식 구문이 없기 때문에 이것이 완전히 잘못되었거나 오래되었다고 생각했지만 yum search
나중에 알게 되었습니다.이것: yum search [cl-*]
예를 들어. 그러나 그것은 다른 세상적인 일을 합니다. 이름이나 설명에 "c"나 "l" 문자가 없는 콘텐츠를 찾습니다. (내가 원하는 것은 이름이 정규식과 일치하는 모든 패키지를 찾는 것입니다 cl-.*
.
나는 또한 yum 결과를 에 파이핑하도록 제안하는 사람을 거의 발견하지 못했습니다. grep
그러면 확실히 문제가 해결될 것입니다. 하지만 원칙적으로는 대괄호 안의 내용이 무엇을 하는지 알고 싶습니다. yum
실제로 정규식으로 검색이 가능 하다면 어떨까요?
답변1
YUM으로 검색
yum search
일반적으로 명령이 search
패키지 이름과 해당 다이제스트에서 하위 문자열을 이미 찾기 때문에 검색 시 정규식(glob)이 사용되지 않습니다 . 이것을 어떻게 알 수 있나요? 사용할 때 이를 알려주는 메시지가 표시됩니다 yum search
.
이름과 스니펫만 일치합니다. 모든 항목에 대해 모두 검색을 사용하세요.
노트:기술적으로 이 문자열 [cl-*]
은 Bash 셸의 glob입니다.
따라서 일반적으로 원하는 문자열 조각을 찾습니다 search
. 특정 패키지를 찾을 때 정규 표현식이 사용됩니다. 이는 list
및 와 같은 YUM 명령입니다 install
.
$ yum list cl-* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
regex/glob에 주의해야 할 유일한 주의 사항은 셸에 동일한 이름의 파일이 있는 경우입니다 cl-*
. 이러한 경우 셸은 YUM 확장에 제공하기 전에 regex/glob을 구문 분석합니다.
따라서 regex/glob과 일치하는 파일이 있으면 yum list cl-*
실행 대신 명령을 실행합니다.yum list cl-file
cl-*
$ ls cl-file
cl-file
$ yum list cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.steadfast.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.steadfast.net
Error: No matching Packages to list
다음과 같이 와일드카드 문자를 이스케이프 처리하면 이러한 상황이 발생하지 않도록 할 수 있습니다.
$ yum list cl-\* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
괄호는 어떻습니까?
로컬 디렉토리의 파일이 어디에서 일치하는지 명령 에 전달된 [cl-*]
다음 셸에서 일치된 후에 발견되는 것으로 의심됩니다.yum search
yum search
$ ls cl-file
cl-file
$ yum search cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
======================================================================= N/S matched: cl-file =======================================================================
opencl-filesystem.noarch : OpenCL filesystem layout
Name and summary matches only, use "search all" for everything.
노트:위의 내용은 내가 원하는 파일 이름 cl-file
이 아닌 내 파일 이름과 일치합니다 cl-*
.
답변2
여기서는 완전히 다른 yum 버전인 RHEL 6.5 및 yum 3.2.29가 사용됩니다.
다음을 방지하세요:
현재 디렉토리의 어떤 항목과도 일치하지 않도록 쉘 와일드카드 인용문 *을 전달해야 합니다. 이에 대한 자세한 내용과 실제 예는 나중에 답변을 참조하세요.https://unix.stackexchange.com/a/155157/83329
어쨌든, 다시 한 번 확인하자면, yum 검색을 사용하여 실제로 효과적으로 검색하는 유일한 방법은 다소 모호한 결과를 제공하는 것 yum search all | grep foo
입니다 . yum search foo
그러나 yum list "foo-*"
효과는 예상한 대로이며 귀하의 경우 유일한 결과는 cl-asdf.noarch 패키지일 수 있습니다.
관련된 yum 버그 보고서를 간략히 살펴보면 yum 검색에는 다른 단점이 있는 것 같습니다.https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
답변3
죄송합니다. 아직 댓글을 달 수 없으므로 답변을 사용해야 합니다.
yum search cl-*
아직 시도해 보셨나요 yum list 'cl-*'
? yum whatprovides */foo
특별한 경우이기는 하지만 최소한 파일 이름을 검색하는 데 사용할 수 있습니다. 그렇지 않으면 자주 사용
yum list all | grep -i foo
하지만 yum의 여러 줄 출력에 유의하세요. grep은 첫 번째 줄만 표시할 수 있으므로 아마도 사용할 수도 있습니다.yum list all | grep -iA1 foo
맨페이지의 "목록 옵션" 아래에도 몇 가지 유용한 예가 있습니다. 추가 문서도 바로 업스트림에서 확인할 수 있습니다.http://yum.baseurl.org/예를 들어http://yum.baseurl.org/wiki/YumCommands또는 Python을 통해 직접:http://yum.baseurl.org/wiki/YumCodeSnippet/YumSearch