저는 (아주 새로운) 데비안 기반 배포판을 실행하고 있습니다.
특정 패턴과 일치하는 설치된 모든 패키지의 간단한 목록을 생성하고 싶습니다. 다음과 같이 실행하여 이 작업을 수행할 수 있습니다.
apt list --installed "linux-image-*" | cut -d/ -f1
하지만 다음과 같이 신경 쓰지 않는 줄이 표시됩니다.
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
따라서 를 사용하지 않는 것이 좋습니다 apt
. 다음과 같이 dpkg-query를 실행할 수 있습니다.
dpkg-query --showformat='${Package}\n' --show "linux-image*"
그러나 이는 설치된 패키지에만 국한되지 않습니다. 나는 사용할 수 있다
dpkg-query --list "linux-image-*" | grep "ii"
그런데 텍스트 처리를 많이 해야 하는데 이 공간을 누가 믿을 수 있겠습니까?
따라서 결론은 다음과 같습니다.옳은패턴과 일치하는 설치된 패키지 목록을 얻는 방법은 무엇입니까?
노트:
- 쉘 글로브뿐만 아니라 적절한 정규식이 될 수 있다면 보너스 포인트입니다.
- 텍스트를 구문 분석하는 것은 이상적인 솔루션이 아닌 것 같습니다. 그것이 당신이 제안하는 것이라면 왜 더 나은 방법이 없는지 설명하십시오.
답변1
$ apt list --installed "linux-image-*" 2>/dev/null |awk -F'/' 'NR>1{print $1}'
linux-image-3.16.0-4-amd64
linux-image-4.11.0-1-amd64
linux-image-4.12.0-1-amd64
linux-image-4.13.0-1-amd64
linux-image-4.8.0-2-amd64
linux-image-4.9.0-1-amd64
linux-image-4.9.0-2-amd64
linux-image-4.9.0-3-amd64
정규식에 대해 이야기하기:
$ apt list --installed "linux-image-*" 2>/dev/null |awk -F'/' 'NR>1 && $0~/4.1/{print $1}'
linux-image-4.11.0-1-amd64
linux-image-4.12.0-1-amd64
linux-image-4.13.0-1-amd64
패키지 이름 없이 호출하면 기본적으로 설치된 패키지만 나열하는 dpkg-query
( --showformat) 옵션을 사용할 수도 있습니다 .-f
$ dpkg-query -f '${Package}\n' -W |grep 'linux-image' #-W == --show
답변2
aptitude
정규식을 사용하여 관련 없는 출력 없이 패키지 관리 도구에 알려진 모든 패키지(설치된 패키지 또는 기타 패키지)를 검색하도록 지원하며 출력 형식을 지정하는 방법을 알려줄 수 있습니다.
aptitude search "linux-image-.*"
설치된 패키지만 나열:
aptitude search "linux-image-.* ~i"
설치된 패키지만 나열이름정규식 일치:
aptitude search "linux-image-.* ~i" -F "%p"
이 문서에서는 다음을 다루고 있습니다.사용 가능한 검색 모드그리고출력 형식 지정자상세한. 이 웹사이트에서 다음과 같은 예를 찾을 수도 있습니다.적성과 함께 정규식을 사용하는 방법이 있습니까?,적성을 갖춘 정규식 2부, 그리고Linux - apt만을 사용하여 보안 업데이트 표시 또는 업그레이드.
답변3
이는 Debian 기반 시스템에 설치된 패키지 목록을 얻는 좋은 방법입니다:
dpkg -l | grep ^ii | awk '{print $2}'
출력 라인은 dpkg -l
정상이라고 신뢰할 수 있습니다. 패턴은 ^ii
설치된 패키지와 행을 일치시키고 간단한 Awk는 패키지 이름( apt-get install
명령에 사용된 것과 동일한 이름)인 두 번째 열을 추출합니다. 패키지 이름에는 공백이 포함될 수 없으므로 이는 안전한 작업입니다.
답변4
용어를 검색할 때 "잡기" 위해서는grep평평한포장 백검색어를 묶어야 하는 출력은 아래와 같습니다. "자식"는 샘플 검색어로 사용됩니다.
dpkg -l |grep "^ii git[[:space:]]"
이것캐럿(^)둘,(2) 공백 다음에 검색어 앞에 아무 것도 추가하세요.앞으로이 문자 조합이 아닌 다른 문자와 일치할 수 있습니다.
이 [[:space:]]
검색어는 공백만 즉시 일치시켜 부분 일치를 방지합니다.뒤쪽에그것.