문자열과 일치하는 모든 패키지를 나열하는 더 짧은 방법

문자열과 일치하는 모든 패키지를 나열하는 더 짧은 방법

내가 주로 사용하는 패키지 목록을 검색할 때

dpkg -l|grep string|cut -d" " -f3|xargs

libdouble-conversion3:amd64 libestr0:amd64 libeval-closure-perl libio-stringy-perl libunistring2:amd64 liburi-perl libusr-1.0-1:amd64 libwind0-heimdal:amd64 libxstring-perl php-mbstring php7.0-mbstring php7.4 -mbstring php8.2-mbstring

bash에서 이 목록을 얻는 더 짧은 방법이 있나요?

답변1

dpkg-query-W대신 사용할 경우 형식화된 출력을 허용합니다 -l.

예를 들어

dpkg-query -f='${binary:Package} ' -W  'pyth*'

공백으로 시작하는 모든 바이너리 패키지는 pyth필요한 경우 해당 아키텍처를 포함하여 공백으로 나열되고 구분됩니다.

가능한 형식에 대한 자세한 내용은 을 참조하십시오 man dpkg-query.

반드시 더 짧을 필요는 없지만 이를 기반으로 별칭을 정의할 수 있으므로 REGEX 쿼리를 사용하면 됩니다.

답변2

단지 배우고 싶다면하나aptitude고려할 수 있는 패키지를 검색할 수 있는 도구검색 구문극도로다목적이며 설치 또는 제거된 패키지와 관련된 다양한 기준을 기반으로 검색할 수 있습니다.

여기:

aptitude -q search -F %p '~i ^pyth'

설치된 패키지를 검색합니다(~i, 부족?installed) 그리고 그 이름은 주어진 정규식( or의 ^pyth약어 )과 일치합니다.~n^pyth?name(^pyth)).

-F %p지정하다출력 형식, 여기에 %p패키지 이름이 있습니다.

한 줄에 공백으로 구분된 목록을 인쇄하려는 경우 xargs(의 약어 xargs echo)는 적절한 도구가 아닙니다. 대신 사용하십시오 paste -sd ' ' -. 패키지 목록을 다른 명령으로 전달하는 것이 목적인 경우:

dpkg/aptitude... | xargs -rd '\n' cmd --

하지만:

dpkg/aptitude... | xargs -r cmd

패키지 이름은 일반적으로 /로 시작하지 않고 /가 없으면 문제가 되는 -공백, 따옴표 또는 백슬래시 문자를 포함하지 않기 때문에 이 방법도 작동합니다 .xargs-0-d

명령이 패키지를 제거/제거하는 것인 경우 다음을 수행할 수도 있습니다.

aptitude remove '~i ^pyth'

aptitude또한 l( 모방 보기)를 누르고 거기에 검색 사양을 입력하여 lTUI에서 동일한 검색을 수행 할 수 있습니다.단순 목록 보기. 그러면 이러한 패키지의 세부 정보를 보다 쉽게 ​​확인하고 작업을 수행할 수 있습니다. 처음 시스템에서 실행했을 때 가장 먼저 한 일은 aptitude기본 설정을 변경하는 것이었습니다.옵션->우선 사항확인하여:

    [X] Advance to the next item after changing the state of a package
    [X] Display flat view instead of default view on startup

이렇게 하면 필터링된 패킷 세트에 작업을 더 쉽게 적용할 수 있습니다.

관련 정보