설치된 모든 프로그램을 나열하는 방법은 무엇입니까?

설치된 모든 프로그램을 나열하는 방법은 무엇입니까?

배포판과 함께 제공되는 프로그램과 수동으로 설치한 프로그램을 어떻게 나열합니까?

답변1

배포판에 따라 다릅니다.

  • 적성 기반 배포판(Ubuntu, Debian 등):dpkg -l
  • RPM 기반 배포판(Fedora, RHEL 등):rpm -qa
  • pkg* 기반 배포판(OpenBSD, FreeBSD 등):pkg_info
  • 포티지 기반 배포판(Gentoo 등): equery list또는eix -I
  • Pacman 기반 배포판(Arch Linux 등):pacman -Q
  • 시그윈:cygcheck --check-setup --dump-only *
  • 슬랙 소프트웨어:slapt-get --installed

이 모두 나열됩니다.가방대신에프로그램하지만. 정말로 프로그램을 나열하려면 $PATHbash를 사용하여 수행할 수 있는 실행 파일을 나열하고 싶을 것입니다 compgen.

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

답변2

질문의 두 번째 부분에 답하십시오(추가할 사항 없음).크리스의 대답첫 번째 부분의 경우):

일반적으로아니요수동으로 설치된 프로그램과 해당 구성 요소를 나열하는 방법입니다. 패키지 관리자를 사용하지 않으면 이 정보는 어디에도 기록되지 않습니다. 당신이 할 수 있는 일은 표준 위치(Chris가 제안한 것과 같은)에서 비슷한 방식으로 바이너리를 찾는 것뿐입니다.추측하다어디일부도서관이나일부맨 페이지 등. 그렇기 때문에 가능할 때마다,항상 패키지 관리자 설치 프로그램을 사용해야 합니다..

답변3

(지금까지) 다른 모든 답변은 패키지와 바이너리를 다룹니다. "데스크톱 앱", 즉 시작 메뉴에 나타나는 앱을 언급하는 경우 다음을 시도해 볼 수 있습니다.

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

더 많은 솔루션또 다른 문제.

답변4

프로그램은 PATH를 통해 액세스할 수 있어야 하므로 경로에 있는 모든 항목을 나열하면 됩니다.

ls ${PATH//:/ }

약 3,000~4,000개 프로그램에 대한 결과를 기대합니다.

가능한 몇 가지 오탐지를 배제하기 위해 방법을 개선할 수 있습니다.

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

나에게는 아무런 차이가 없습니다.

관련 정보