Yüklü tüm programları nasıl listelerim?


48

Dağıtımımla birlikte gelen ve el ile yüklediğim programları nasıl listeleyebilirim?


8
Hangi dağıtım? Her dağıtımın farklı yükleme araçları vardır.
Matteo

Hm, Red Hat, Ubuntu ve cygwin ile ilgileniyorum. Bazı komut satırı argümanına sahip programları listelemenin dağıtım gerektirmeyen bir yolu var mı?
InquilineKea

1
Hayır, paket yöneticileri farklı olduğu için yok.
Chris Down

Yanıtlar:


71

Bu senin dağılımına bağlı.

  • Yetenek tabanlı dağıtımlar (Ubuntu, Debian, vb.): dpkg -l
  • RPM tabanlı dağılımlar (Fedora, RHEL, vb): rpm -qa
  • pkg * tabanlı dağıtımlar (OpenBSD, FreeBSD, vb.): pkg_info
  • Portage tabanlı dağıtımlar (Gentoo, vb.): equery listVeyaeix -I
  • pacman tabanlı dağıtımlar (Arch Linux, etc): pacman -Q
  • Cygwin: cygcheck --check-setup --dump-only *
  • Slackware: slapt-get --installed

Bunların hepsi programlardan ziyade paketleri listeler . Eğer gerçekten programları listelemek isterseniz, muhtemelen Gözlerinde farklı yürütülebilir listelemek istediğiniz bash en kullanarak şöyle yapılabilir, :$PATHcompgen

compgen -c

Veya, yoksa 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
Ve RPM tabanlı sistemler için (Red Hat, SuSE, CentOS, vb.):rpm -qa
nos

1
Debian / Ubuntu dkpg -l | grep ^ii.
Rolf

1
@Rolf, dPKg
Harkály Gergő

1
Hrmph ... BSD'ler Linux dağıtımı değil ...
Kusalananda

1
@Kusalananda Huh? Bu cevap hiçbir noktada BSD'lerin Linux dağıtımları olduğunu söylemez, ancak dağıtımlardır . Kelimenin tam anlamıyla BSD'deki "D" nin anlamı budur.
Chris Down

13

Sorunun ikinci kısmına cevap vermek ( Chris'in ilk kısmı için cevabına eklenecek hiçbir şey yok ) :

Genellikle yoktur hiçbir elle yüklü programları ve bunların bileşenlerini listeleme yol. Paket yöneticisi kullanmadıysanız, bu hiçbir yerde kaydedilmez. Tüm yapabileceğin (Chris önerilen) gibi standart konumlarda ikiliklerini ve benzer şekilde, olduğu tahmin nerede bazı kütüphaneler veya bazı vb kalvuzlar geldi. Bu nedenle, mümkün olduğunda , paket yöneticinizi kullanarak programları her zaman yüklemelisiniz .


3

Programlara PATH üzerinden ulaşılabilir olmalıdır, bu nedenle yoldaki her şeyi listele:

ls ${PATH//:/ }

Yaklaşık 3k-4k programların bir sonucunu bekleyin.

Olası bir yanlış pozitif azınlığı dışlamak için, yaklaşımı iyileştirebilirsiniz:

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

Benim için fark yaratmadı.


2
Bunun potansiyel olarak çeşitli programları da içeremeyeceğini unutmayın (içindeki dizinlerin alt dizinleri $PATH, vb.).
Chris Down

1
Bir test ekledim, ancak bu benim için fark yaratmadı (yoldaki bir dizindeki yolun kendisi, yolun kendisi olmayan ne kadar yararlı?). Ancak doğruluğa güvendiğiniz durumlar için faydalı olabilir.
kullanıcı bilinmeyen,

1
müthiş! Linux versiyonunu bilemedim (uzun hikaye - ama suçlu değil) ama bu kod günümü kurtardı :)
obenjiro

2

Diğer tüm cevaplar (şimdiye kadar) paketler ve ikili dosyalar ile ilgilidir. "Masaüstü uygulamaları" nı kastediyorsanız, başlat menünüzde görünenleri deneyebilirsiniz:

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

Başka bir soruda daha fazla çözüm .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.