web-dev-qa-db-fra.com

Comment répertorier toutes les applications installées sur mon système?

Je sais, je peux juste frapper Super+A pour voir toutes les applications installées dans Ubuntu, mais j'ai besoin d'une commande pour lister leurs noms. La commande

dpkg --get-selections | awk '{print $1}'

n’est pas non plus une option car il affiche tous les packages installés et contient les pilotes, les noyaux et les bibliothèques.

17
Danatela

Je suis venu avec cette réponse pour les personnes qui veulent utiliser bash dans le bon sens. Il est clair que la réponse à la question est liée à la liste des fichiers de /usr/share/applications, mais le problème est que la commande lsne devrait jamais être analysée . Auparavant, je faisais la même erreur, mais maintenant, j'ai appris que le meilleur moyen consiste à utiliser une boucle forpour parcourir les fichiers, même si je dois utiliser d'autres touches de mon précieux clavier:

for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done

J'ai également utilisé dans la commande précédente manipulation de chaînes opérations: supprimé de apples 24 premiers caractères qui sont /usr/share/applications/ et les 8 derniers caractères qui sont .desktop.


Mise à jour:

Un autre endroit où vous pouvez trouver les applications affichées par le tableau de bord est ~/.local/share/applications/*.desktop. Vous devez donc également exécuter la commande suivante:

for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done

Pour unifier les deux commandes précédentes, vous pouvez utiliser:

for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done
15
Radu Rădeanu

Pour obtenir la liste de toutes vos applications installées avec leurs noms, le moyen le plus simple consiste à effectuer:

Sudo apt-get install aptitude
aptitude -F' * %p -> %d ' --no-gui --disable-columns search '?and(~i,!?section(libs), !?section(kernel), !?section(devel))'

Vous obtiendrez une liste de Nice de tous les paquets installés qui ne sont ni des bibliothèques, ni des noyaux, ni des paquets de développement comme celui-ci:

* Zip -> Archiver for .Zip files 
* zlib1g -> compression library - runtime 
* zlib1g-dev -> compression library - development 
* zsh -> Shell with lots of features 
* zsh-common -> architecture independent files for Zsh 

Il est plus complet puisqu'il répertorie également les applications non graphiques qui n'apparaissent pas dans les fichiers .desktop.

4
Braiam

Exécutez la commande ci-dessous pour voir toutes les applications installées,

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

Si vous souhaitez obtenir la liste de toutes les applications installées, exécutez la commande ci-dessous,

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

Il enregistre le résultat de la commande ci-dessus dans le fichier applications.txt de votre répertoire ~/Desktop.

OR

Exécutez également la commande ci-dessous sur le terminal pour répertorier les applications installées,

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort

Pour obtenir la liste dans un fichier texte, exécutez la commande ci-dessous

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort > ~/Desktop/applications.txt

Les entrées du bureau pour toutes les applications installées sont stockées dans le répertoire /usr/share/applications, où les noms de fichiers sont au format application-name.desktop. La suppression de la partie .desktop des noms de fichiers vous donnera la liste totale des applications installées.

Mise à jour:

Comme suggéré par @Rad , vous pouvez également trouver des entrées de bureau pour vos applications installées supplémentaires dans le répertoire ~/.local/share/applications.

find /usr/share/applications ~/.local/share/applications -maxdepth 1 -type f -exec basename {} .desktop \;
3
Avinash Raj

Le questionneur veut lister les noms de toutes les "applications" installées.

En ce qui concerne les applications avec des fichiers .desktop :

  • la réponse de Danatela traite des applications qui ont des fichiers .desktop dans /usr/share/applications
  • comme signalé par Rad , des applications avec des fichiers .desktop peuvent également être trouvées dans ~/.local/share/applications
  • à ce stade, il est à noter que les applications avec des fichiers .desktop peuvent avoir deux noms
    • un "nom" est disponible en interrogeant le tableau de bord dans Unity ou à partir de menus dans Xubuntu (par exemple). Ce nom est dérivé de la ligne Name= dans le fichier .desktop respectif. Un exemple est "Carte de caractères".
    • l'autre "nom" est celui à utiliser lors de l'exécution de l'application à partir du terminal et constitue le premier mot après Exec=. Dans le cas de "Character Map", ce serait gucharmapname__.
  • les deux noms (et le fichier .desktop) pourrait être lié avec:
    • sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' /usr/share/applications/*.desktop
    • et
    • sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' $HOME/.local/share/applications/*.desktop

Concernant les applications sans fichiers .desktop :

Selon la définition de "app", certains n'ont pas de fichiers .desktop.

  • quelque chose comme conkyname__, poppler-utils, qpdfname__, xdotoolet wmctrlserait considéré comme "apps"? Comment sont-ils identifiés et listés par leurs noms (en supposant qu'on les ait installés)?
  • Qu'en est-il de awkname__, findname__, grepname__, lset sedpour en nommer plus? Sont-ils des applications ou ne sont-ils pas?

Si quelque chose qui a une commande est considéré comme une application, alors la commande Linux listant toutes les commandes et alias disponibles et cette réponse ici aidera à les identifier.

0
DK Bose

Vous ne savez pas pourquoi la plupart des réponses publiées impliquent l'extraction du nom de fichier des raccourcis .desktop. Votre nom de fichier de raccourci .desktop peut être n'importe quoi, mais ce qui compte est le champ Name à l'intérieur du fichier de raccourci. Si vous souhaitez créer la liste des noms d’applications installées dans Dash, indiquez simplement "grep" dans la zone [Desktop Entry].

Code rudimentaire, avec bash

#!/bin/bash

for file in /usr/share/applications/*.desktop;
do
    while IFS== read -r key val
    do
        if [[ -z $key ]]; then
            continue
        else
            if [[ $key =~ ^\[Desktop\ Entry ]]; then
                interesting_field=1
            Elif [[ $key =~ ^\[ ]]; then
                interesting_field=0
            fi
        fi
        [[ $interesting_field -eq 1 ]] && [[ $key == "Name" ]] && echo $val
    done < $file
done

Mais cela ne prend pas en compte les raccourcis cachés dans Dash. Quelqu'un qui comprend mieux les spécifications .desktop pourrait vouloir développer davantage ce code pour exclure ces types de raccourcis

Edit: une autre tentative, avec Python

#!/usr/bin/python

from os import listdir
from os.path import isfile, join
import ConfigParser

SHORTCUTDIR = "/usr/share/applications/"

shortcuts = [ file for file in listdir(SHORTCUTDIR) if isfile(join(SHORTCUTDIR, file)) and file.endswith(".desktop") ]
dash_shortcuts = []

for f in shortcuts:
    c = ConfigParser.SafeConfigParser()
    c.read(SHORTCUTDIR + f)

    try:
        if c.getboolean('Desktop Entry', 'NoDisplay') is True:
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" in c.get('Desktop Entry', 'NotShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" not in c.get('Desktop Entry', 'OnlyShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    dash_shortcuts += [ c.get("Desktop Entry", "Name") ]

for s in sorted(dash_shortcuts, key=str.lower):
    print s
0
Flint

Si vous avez besoin de la liste des applications affichées lorsque vous appuyez sur Super+A, vous pouvez utiliser ls /usr/share/applications. La seule chose que vous devriez faire est de remplacer .desktop qui se termine, ce qui est une tâche assez simple. Je le fais avec sed:

ls /usr/share/applications | sed s/.desktop// - > installed-apps.txt

Mais vous pouvez le faire après avoir reçu la liste à l'aide de l'éditeur de texte.

0
Danatela