Se me ocurrió esta respuesta para las personas que quieren usar bash de una buena manera. Está claro que la respuesta de la pregunta está relacionada con la lista de los archivos /usr/share/applications
, pero el problema es que el ls
comando no debe analizarse nunca . En el pasado, estaba cometiendo el mismo error, pero ahora aprendí que la mejor manera es usar un for
bucle para iterar sobre los archivos, incluso si debo usar algunas teclas más de mi precioso teclado:
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
También utilicé en las operaciones de manipulación de cadenas de comando anteriores : eliminado de los app
primeros 24 caracteres que son /usr/share/applications/
y los últimos 8 caracteres que son .desktop
.
Actualizar:
Otro lugar donde puede encontrar aplicaciones que se muestran en el tablero es ~/.local/share/applications/*.desktop
. Por lo tanto, también debe ejecutar el siguiente comando:
for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done
Para unificar los dos comandos anteriores, puede usar:
for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done
zsh
,zsh-common
y otros!--no-gui
eliminado.--no-gui
parte, parece que no está ahí para lo que pensé que era.Ejecute el siguiente comando para ver todas las aplicaciones instaladas,
Si desea obtener la lista de todas las aplicaciones instaladas, ejecute el siguiente comando,
Almacenará el resultado del comando anterior en un
applications.txt
archivo dentro de su~/Desktop
directorio.O
También ejecute el siguiente comando en la terminal para enumerar las aplicaciones instaladas,
Para obtener la lista en el archivo de texto, ejecute el siguiente comando
Las entradas de escritorio para todas las aplicaciones instaladas se almacenan dentro del
/usr/share/applications
directorio, donde los nombres de los archivos están en el formato.application-name.desktop
Retirar la.desktop
parte de los nombres de los archivos le dará la lista total de aplicaciones instaladas.Actualizar:
Como sugirió @Radu , también puede encontrar entradas de escritorio para sus aplicaciones instaladas adicionales dentro del
~/.local/share/applications
directorio.fuente
ls
¡El comando no debe analizarse nunca !ls
, con fines de representación y para tareas no críticas como la anterior, y trataré de tener en cuenta esta limitación, ¡gracias por el aviso!Si necesita una lista de aplicaciones que se muestra cuando presiona Super+ A, puede usar
ls /usr/share/applications
. Lo único que debe hacer es reemplazar el.desktop
final, que es una tarea bastante simple. Lo hago consed
:Pero puede hacerlo después de recibir la lista utilizando el editor de texto.
fuente
ls
¡El comando no debe analizarse nunca !/usr/share/application/*.desktop
archivos no contienen ningún carácter especial, por lo quels
se permite analizar particularmente en este caso.bad name.desktop
por ejemplo? No hay razón para arriesgarls
aquí.No estoy seguro de por qué la mayoría de las respuestas publicadas implican extraer el nombre de archivo de los accesos directos de .desktop. Su nombre de archivo de acceso directo .desktop puede ser cualquier cosa, pero lo que importa es el
Name
campo dentro del archivo de acceso directo. Si desea crear la lista de nombres de aplicaciones instaladas que se muestran en Dash, simplemente "grep" ese campo en[Desktop Entry]
Código rudimentario, con bash
Pero esto no tiene en cuenta los accesos directos que están ocultos para que no se muestren en Dash. Alguien con una mejor comprensión de la especificación .desktop podría querer expandir aún más este código para excluir esos atajos
Editar: otro intento, con Python
fuente
Name
entrada en .desktop que está analizando, que siempre es el caso. Además, no debe suponer que todas las líneas que le interesen estarán en el número de línea fijaName
opción podría estar fuera de ese rango de número de línea, especialmente con muchas opciones o líneas en blanco debajo[Desktop\ Entry ]
. Y el archivo .desktop es un archivo iniEl interlocutor quiere enumerar los nombres de todas las "aplicaciones" instaladas.
En cuanto a las aplicaciones con archivos .desktop :
/usr/share/applications
~/.local/share/applications
Name=
línea en el archivo .desktop respectivo. Un ejemplo es el "Mapa de caracteres".Exec=
. En el caso del "Mapa de caracteres", eso seríagucharmap
.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
Con respecto a las aplicaciones sin archivos .desktop :
Dependiendo de cómo se defina "aplicación", algunos no tienen archivos .desktop.
conky
,poppler-utils
,qpdf
,xdotool
ywmctrl
ser considerados "aplicaciones"? ¿Cómo se deben identificar y enumerar por sus nombres (suponiendo que uno los haya instalado)?awk
,find
,grep
,ls
ysed
para nombrar un poco más? ¿Son aplicaciones o no?Si algo que tiene un comando se considera una aplicación, entonces el comando de Linux para enumerar todos los comandos y alias disponibles y esta respuesta ayudará a identificarlos.
fuente