J'ai trouvé cette réponse pour les gens qui veulent utiliser bash dans le bon sens. Il est clair que la réponse à la question est liée à la liste des fichiers /usr/share/applications
, mais le problème est que la ls
commande ne doit jamais être analysée . Dans le passé, je faisais la même erreur, mais maintenant j'ai appris que la meilleure façon est d'utiliser une for
boucle pour parcourir les fichiers, même si je dois utiliser quelques touches supplémentaires de mon précieux clavier:
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
J'ai également utilisé dans les opérations de manipulation de chaîne de commande précédentes : supprimé des app
24 premiers caractères qui sont /usr/share/applications/
et des 8 derniers caractères qui le sont .desktop
.
Mise à jour:
Un autre endroit où vous pouvez trouver des applications affichées par le Dash 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
zsh
,zsh-common
et d'autres!--no-gui
supprimé.--no-gui
partie, il semble qu'elle ne soit pas là pour ce que je pensais.Exécutez la commande ci-dessous pour voir toutes les applications installées,
Si vous souhaitez obtenir la liste de toutes les applications installées, exécutez la commande ci-dessous,
Il stockera la sortie de commande ci-dessus dans un
applications.txt
fichier à l'intérieur de votre~/Desktop
répertoire.OU
Exécutez également la commande ci-dessous sur le terminal pour répertorier les applications installées,
Pour obtenir la liste dans un fichier texte, exécutez la commande ci-dessous
Les entrées du bureau pour toutes les applications installées sont stockées dans le
/usr/share/applications
répertoire, où les noms de fichiers sont au formatapplication-name.desktop
.La suppression de la.desktop
partie des noms de fichiers vous donnera la liste totale des applications installées.Mise à jour:
Comme l'a suggéré @Radu , vous pouvez également trouver des entrées de bureau pour vos applications supplémentaires installées dans le
~/.local/share/applications
répertoire.la source
ls
la commande ne doit jamais être analysée !ls
- à des fins de représentation et pour des tâches non critiques comme celle ci-dessus - et essayez de garder à l'esprit cette limitation, merci pour la tête!Si vous avez besoin d'une liste des applications affichées lorsque vous appuyez sur Super+ A, vous pouvez utiliser
ls /usr/share/applications
. La seule chose que vous devez faire est de remplacer la.desktop
fin, ce qui est une tâche assez simple. Je le fais avecsed
:Mais vous pouvez le faire après avoir reçu la liste à l'aide de l'éditeur de texte.
la source
ls
la commande ne doit jamais être analysée !/usr/share/application/*.desktop
fichiers ne contiennent aucun caractère spécial, donc l'analyse enls
particulier dans ce cas est autorisée.bad name.desktop
par exemple? Il n'y a aucune raison de risquerls
ici.Vous ne savez pas pourquoi la plupart des réponses publiées impliquent d'extraire le nom de fichier des raccourcis .desktop. Votre nom de fichier de raccourci .desktop peut être n'importe quoi, mais ce qui compte, c'est le
Name
champ à l'intérieur du fichier de raccourci. Si vous souhaitez créer la liste des noms des applications installées qui s'affichent dans Dash, il suffit de "grep" ce champ sous[Desktop Entry]
Code rudimentaire, avec bash
Mais cela ne prend pas en compte les raccourcis qui ne sont pas affichés dans Dash. Quelqu'un avec une meilleure compréhension de la spécification .desktop pourrait vouloir étendre davantage ce code pour exclure ce genre de raccourcis
Edit: une autre tentative, avec Python
la source
Name
entrée dans .desktop que vous analysez, ce qui est toujours le cas. De plus, vous ne devez pas supposer que toutes les lignes qui vous intéressent seront sur un numéro de ligne fixeName
option pourrait être en dehors de cette plage de numéros de ligne, en particulier avec beaucoup d'options ou de lignes vides en dessous[Desktop\ Entry ]
. Et le fichier .desktop est un fichier iniL'intervenant souhaite répertorier les noms de toutes les "applications" installées.
Concernant les applications avec des fichiers .desktop :
/usr/share/applications
~/.local/share/applications
Name=
ligne du fichier .desktop respectif. Un exemple est "Table de caractères".Exec=
. Dans le cas de "Character Map", ce seraitgucharmap
.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 façon dont on définit «app», certains n'ont pas de fichiers .desktop.
conky
,poppler-utils
,qpdf
,xdotool
etwmctrl
être considérés comme des « applications »? Comment les identifier et les répertorier par leur nom (en supposant que l'on les ait installés)?awk
,find
,grep
,ls
etsed
de nommer un peu plus? S'agit-il d'applications ou non?Si tout ce qui a une commande est considéré comme une application, alors la commande Linux pour répertorier toutes les commandes et alias disponibles et cette réponse aidera à les identifier.
la source