Ich habe diese Antwort für Leute gefunden, die bash gut nutzen wollen. Es ist klar, dass sich die Antwort auf die Frage auf die Auflistung der Dateien bezieht /usr/share/applications
, aber das Problem ist, dass der ls
Befehl niemals analysiert werden sollte . In der Vergangenheit habe ich den gleichen Fehler gemacht, aber jetzt habe ich gelernt, dass der beste Weg ist, eine for
Schleife zu verwenden, um die Dateien zu durchlaufen, auch wenn ich noch einige Tasten von meiner wertvollen Tastatur verwenden muss:
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
Ich habe auch in den vorherigen Operationen zur Manipulation von Befehlszeichenfolgen verwendet: Von den app
ersten 24 Zeichen, die es gibt, /usr/share/applications/
und den letzten 8 Zeichen, die es gibt, entfernt .desktop
.
Aktualisieren:
Ein weiterer Ort, an dem Sie Anwendungen finden können, die vom Dash angezeigt werden, ist ~/.local/share/applications/*.desktop
. Sie müssen also auch den folgenden Befehl ausführen:
for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done
Um die beiden vorherigen Befehle zu vereinheitlichen, können Sie Folgendes verwenden:
for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done
zsh
,zsh-common
und andere!--no-gui
entfernt.--no-gui
Teil zurück, es scheint nicht da zu sein, was ich dachte.Führen Sie den folgenden Befehl aus, um alle installierten Anwendungen anzuzeigen.
Wenn Sie eine Liste aller installierten Anwendungen erhalten möchten, führen Sie den folgenden Befehl aus:
Die obige Befehlsausgabe wird in einer
applications.txt
Datei in Ihrem~/Desktop
Verzeichnis gespeichert .ODER
Führen Sie auch den folgenden Befehl auf dem Terminal aus, um die installierten Anwendungen aufzulisten.
Führen Sie den folgenden Befehl aus, um die Liste in einer Textdatei abzurufen
Desktop-Einträge für alle installierten Anwendungen werden in einem
/usr/share/applications
Verzeichnis gespeichert , in dem die Dateinamen im Format. Durchapplication-name.desktop
Entfernen des.desktop
Teils aus den Dateinamen erhalten Sie die vollständige Liste der installierten Anwendungen.Aktualisieren:
Wie von @Radu vorgeschlagen , finden Sie im
~/.local/share/applications
Verzeichnis auch Desktop-Einträge für Ihre zusätzlich installierten Anwendungen .quelle
ls
Kommando sollte nie geparst werden !ls
- zu Darstellungszwecken und für unkritische Aufgaben wie die oben genannte - und versuchen, diese Einschränkung zu berücksichtigen. Vielen Dank für die Hinweise!Wenn Sie eine Liste der Anwendungen benötigen, die beim Drücken von Super+ angezeigt werden A, können Sie verwenden
ls /usr/share/applications
. Das einzige, was Sie tun sollten, ist das.desktop
Ende zu ersetzen , was eine recht einfache Aufgabe ist. Ich mache es mitsed
:Sie können dies jedoch tun, nachdem Sie die Liste mit dem Texteditor erhalten haben.
quelle
ls
Kommando sollte nie geparst werden !/usr/share/application/*.desktop
Dateien enthalten eigentlich keine Sonderzeichen, daher ist das Parsenls
besonders in diesem Fall zulässig.bad name.desktop
zum Beispiel erstellt habe? Hier gibt es keinen Grund, ein Risikols
einzugehen.Ich bin mir nicht sicher, warum bei den meisten Antworten der Dateiname der .desktop-Verknüpfungen extrahiert wird. Der Dateiname der Desktop-Verknüpfung kann beliebig sein, es kommt jedoch nicht auf das
Name
Feld in der Verknüpfungsdatei an. Wenn Sie die Liste der installierten Anwendungsnamen erstellen möchten, die in Dash angezeigt werden, klicken Sie einfach in das entsprechende Feld[Desktop Entry]
Rudimentaler Code, mit Bash
Dabei werden jedoch keine Verknüpfungen berücksichtigt, die nicht in Dash angezeigt werden können. Jemand, der die .desktop-Spezifikation besser versteht, möchte diesen Code möglicherweise weiter erweitern, um diese Art von Verknüpfungen auszuschließen
Edit: ein weiterer Versuch, mit Python
quelle
Name
Eintrag in der .desktop-Datei vorhanden ist, die Sie analysieren. Dies ist immer der Fall. Außerdem sollten Sie nicht davon ausgehen, dass alle Linien, an denen Sie interessiert sind, eine Festnetznummer habenName
Option außerhalb dieses Bereichs der Zeilennummer liegen könnte, insbesondere bei vielen Optionen oder Leerzeilen darunter[Desktop\ Entry ]
. Und .desktop-Datei ist eine INI-DateiDer Fragesteller möchte die Namen aller installierten "Apps" auflisten.
Bezüglich Apps mit .desktop-Dateien :
/usr/share/applications
~/.local/share/applications
Name=
Zeile in der jeweiligen .desktop-Datei ab. Ein Beispiel ist "Character Map".Exec=
. Im Fall von "Character Map" wäre dasgucharmap
.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
Bezüglich Apps ohne .desktop-Dateien :
Abhängig davon, wie man "App" definiert, haben einige keine .desktop-Dateien.
conky
,poppler-utils
,qpdf
,xdotool
undwmctrl
als „Apps“ werden? Wie sollen diese identifiziert und mit ihren Namen aufgelistet werden (vorausgesetzt, man hat sie installiert)?awk
,find
,grep
,ls
undsed
etwas mehr zu nennen? Sind sie Apps oder nicht?Wenn irgendetwas , das einen Befehl hat, als App betrachtet wird, hilft der Linux-Befehl, alle verfügbaren Befehle und Aliase aufzulisten, und diese Antwort hilft, sie zu identifizieren.
quelle