How can I list all applications installed in my system?

I came up with this answer for people who wants to use bash in a good way. It's clear that the answer of the question is related to the listing of the files from /usr/share/applications, but the problem is that ls command shouldn't be parsed ever. In the past, I was doing the same mistake, but now I learned that the best way is to use a for loop to iterate over the files, even if I must use some more keys from my precious keyboard:

for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done

I also used in the previous command string manipulation operations: removed from app first 24 characters which are /usr/share/applications/ and last 8 characters which are .desktop.


Update:

Another place where you can find applications shown by the Dash is ~/.local/share/applications/*.desktop. So you need to run the following command as well:

for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done

To unify the previous two commands, you can use:

for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done

To get the list of all your installed applications with their names, the easiest way is to do:

sudo apt-get install aptitude
aptitude -F' * %p -> %d ' --no-gui --disable-columns search '?and(~i,!?section(libs), !?section(kernel), !?section(devel))'

It will get you a nice list of all installed packages that are not libraries, not kernels, not development package like this:

* 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 

It's more complete since it also lists non-GUI applications that won't appear in the .desktop files


Run the below command to see all the installed applications,

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

If you want to get the list of all installed applications, then run the below command,

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' - > ~/Desktop/applications.txt

It will stores the above command output to applications.txt file inside your ~/Desktop directory.

OR

Also run the below command on terminal to list the installed applications,

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort

To get the list in text file, run the below command

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort > ~/Desktop/applications.txt

Desktop entries for all the installed applications are stored inside /usr/share/applications directory, where file names are in the format of application-name.desktop.Removing the .desktop part from the file names will give you the total list of installed applications.

Update:

As @Radu suggested, you can also find desktop entries for your additional installed applications inside ~/.local/share/applications directory.

find /usr/share/applications ~/.local/share/applications -maxdepth 1 -type f -exec basename {} .desktop \;