설치된 모든 프로그램을 어떻게 나열합니까?


48

배포와 함께 제공된 프로그램과 수동으로 설치 한 두 프로그램을 모두 나열하려면 어떻게합니까?


8
어느 배포판? 배포판마다 설치 도구가 다릅니다.
Matteo

흠, 저는 Red Hat, Ubuntu 및 cygwin에 관심이 있습니다. 명령 줄 인수를 사용하여 프로그램을 나열하는 배포없는 방법이 있습니까?
InquilineKea

1
아니요, 패키지 관리자가 다르기 때문에 없습니다.
Chris Down

답변:


71

배포판에 따라 다릅니다.

  • 적성 기반 배포판 (우분투, 데비안 등) : dpkg -l
  • RPM 기반 배포판 (Fedora, RHEL 등) : rpm -qa
  • pkg * 기반 배포판 (OpenBSD, FreeBSD 등) : pkg_info
  • 포티지 기반 배포판 (Gentoo 등) : equery list또는eix -I
  • 팩맨 기반 배포판 (Arch Linux 등) : pacman -Q
  • 시그윈 : cygcheck --check-setup --dump-only *
  • 슬랙웨어 : slapt-get --installed

그러나 이들 모두는 프로그램이 아닌 패키지 를 나열합니다 . 프로그램을 정말로 나열하고 싶다면 bash에 다음과 같이 수행 할 수있는 실행 파일을 나열하고 싶을 것입니다 .$PATHcompgen

compgen -c

또는없는 경우 compgen:

#!/bin/bash
IFS=: read -ra dirs_in_path <<< "$PATH"

for dir in "${dirs_in_path[@]}"; do
    for file in "$dir"/*; do
        [[ -x $file && -f $file ]] && printf '%s\n' "${file##*/}"
    done
done

4
그리고 RPM 기반 시스템 (Red Hat, SuSE, CentOS 등) :rpm -qa
nos

1
데비안 / 우분투입니다 dkpg -l | grep ^ii.
Rolf

1
@ 롤프, 당신은 dPKg를 의미
Harkály Gergő

1
흠 ... BSD는 리눅스 배포판이 아닙니다 ...
Kusalananda

1
@Kusalananda Huh? 이 답변에 어떤 시점에서 BSD의 리눅스 배포판이다, 그러나이 있다고 말하는가 분포 . 그것이 문자 그대로 BSD의 "D"가 의미하는 바입니다.
Chris Down

13

질문의 두 번째 부분에 대답 ( 첫 번째 부분에 대한 Chris의 대답 에 실제로 추가되는 것은 없음 ) :

일반적으로 수동으로 설치된 프로그램 및 해당 구성 요소를 나열하는 방법은 없습니다 . 패키지 관리자를 사용하지 않은 경우 어디에도 기록되지 않습니다. 당신이 할 수있는 모든 (크리스 제안처럼) 표준 위치에서 바이너리를 찾을 수와 비슷한 방식에서, 추측 경우 일부 라이브러리 또는 일부 등을 매뉴얼 페이지에서왔다. 따라서 가능 하면 항상 패키지 관리자를 사용하여 프로그램을 설치해야합니다 .


3

프로그램은 PATH를 통해 접근 할 수 있어야합니다. 경로에있는 모든 것을 나열하십시오.

ls ${PATH//:/ }

약 3k-4k 프로그램의 결과를 기대하십시오.

소수의 오 탐지 가능성을 배제하기 위해 접근 방식을 세분화 할 수 있습니다.

for d in ${PATH//:/ } ; do 
    for f in $d/* ; do  
        test -x $f && test -f $f && echo $f
    done
done

그것은 나에게 차이를 만들지 않았다.


2
이것은 잠재적으로 다양한 비 프로그램들 (디렉토리의 하위 디렉토리 $PATH등) 도 잠재적으로 나열합니다 .
Chris Down

1
테스트를 추가했지만 차이가 없었습니다 (경로에없는 디렉토리의 디렉토리가 얼마나 유용합니까?). 그러나 정확성에 의존하는 경우 유용 할 수 있습니다.
사용자가 알 수 없음

1
대박! 나는 리눅스의 버전을 알 수 없었습니다 (긴 이야기-그러나 범죄는 없습니다). 그러나이 코드는 저의 하루를 구했습니다 :)
obenjiro

2

다른 모든 답변은 지금까지 패키지와 바이너리를 처리합니다. 시작 메뉴에 나타나는 "데스크톱 응용 프로그램"을 의미하는 경우 다음을 시도해보십시오.

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

다른 질문에 더 많은 솔루션 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.