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.
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 ls
ne 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 for
pour 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 app
les 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
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
.
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
.
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 \;
Le questionneur veut lister les noms de toutes les "applications" installées.
En ce qui concerne les applications avec des fichiers .desktop :
/usr/share/applications
~/.local/share/applications
Name=
dans le fichier .desktop respectif. Un exemple est "Carte de caractères".Exec=
. Dans le cas de "Character Map", ce serait gucharmap
name__.sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' /usr/share/applications/*.desktop
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.
conky
name__, poppler-utils
, qpdf
name__, xdotool
et wmctrl
serait considéré comme "apps"? Comment sont-ils identifiés et listés par leurs noms (en supposant qu'on les ait installés)?awk
name__, find
name__, grep
name__, ls
et sed
pour 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.
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
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.