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 lscomando no debe analizarse nunca . En el pasado, estaba cometiendo el mismo error, pero ahora aprendí que la mejor manera es usar un forbucle 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 appprimeros 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-commony otros!--no-guieliminado.--no-guiparte, 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.txtarchivo dentro de su~/Desktopdirectorio.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/applicationsdirectorio, donde los nombres de los archivos están en el formato.application-name.desktopRetirar la.desktopparte 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/applicationsdirectorio.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.desktopfinal, 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/*.desktoparchivos no contienen ningún carácter especial, por lo quelsse permite analizar particularmente en este caso.bad name.desktoppor ejemplo? No hay razón para arriesgarlsaquí.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
Namecampo 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
Nameentrada 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 fijaNameopció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/applicationsName=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/*.desktopsed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' $HOME/.local/share/applications/*.desktopCon respecto a las aplicaciones sin archivos .desktop :
Dependiendo de cómo se defina "aplicación", algunos no tienen archivos .desktop.
conky,poppler-utils,qpdf,xdotoolywmctrlser considerados "aplicaciones"? ¿Cómo se deben identificar y enumerar por sus nombres (suponiendo que uno los haya instalado)?awk,find,grep,lsysedpara 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