Làm cách nào để liệt kê cả hai chương trình đi kèm với bản phân phối của tôi và những chương trình tôi đã cài đặt thủ công?
Làm cách nào để liệt kê cả hai chương trình đi kèm với bản phân phối của tôi và những chương trình tôi đã cài đặt thủ công?
Câu trả lời:
Điều đó phụ thuộc vào phân phối của bạn.
dpkg -l
rpm -qa
pkg_info
equery list
hoặceix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
Tất cả những thứ này sẽ liệt kê các gói hơn là các chương trình . Nếu bạn thực sự muốn liệt kê các chương trình, có lẽ bạn muốn liệt kê các chương trình thực thi trong $PATH
đó, có thể được thực hiện như vậy bằng cách sử dụng bash's compgen
:
compgen -c
Hoặc, nếu bạn không 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
rpm -qa
dkpg -l | grep ^ii
.
Trả lời phần thứ hai của câu hỏi (không có gì thực sự được thêm vào câu trả lời của Chris cho phần đầu tiên) :
Nhìn chung không có cách nào để liệt kê các chương trình được cài đặt thủ công và các thành phần của chúng. Điều này không được ghi lại ở bất cứ đâu nếu bạn không sử dụng trình quản lý gói. Tất cả các bạn có thể làm là tìm những chương trình tại các địa điểm tiêu chuẩn (như Chris gợi ý) và theo một cách tương tự, đoán nơi một số thư viện hoặc một số trang hướng dẫn, vv đến từ đâu. Đó là lý do tại sao, bất cứ khi nào có thể, bạn nên luôn cài đặt các chương trình bằng trình quản lý gói của mình .
Các chương trình nên có thể truy cập thông qua PATH, vì vậy chỉ cần liệt kê mọi thứ trong đường dẫn:
ls ${PATH//:/ }
Mong đợi một kết quả của khoảng 3k-4k chương trình.
Để loại trừ một nhóm thiểu số có thể có dương tính giả, bạn có thể tinh chỉnh cách tiếp cận:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
Nó không tạo ra sự khác biệt đối với tôi.
$PATH
, v.v.).
Tất cả các câu trả lời khác (cho đến nay) đối phó với các gói và nhị phân. Nếu bạn có nghĩa là "ứng dụng máy tính để bàn", những ứng dụng xuất hiện trong menu bắt đầu của bạn, bạn có thể thử:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
Nhiều giải pháp trong một câu hỏi khác .