Как я могу перечислить все приложения, установленные в моей системе?

Здесь есть шаткий расширение окна:

http://cinnamon-spices.linuxmint.com/extensions/view/24

1
задан 13 March 2014 в 16:09

5 ответов

Чтобы получить список всех установленных приложений с их именами, самый простой способ:

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

Он предоставит вам список всех установленных пакетов, которые не являются библиотеками, а не ядра, а не пакет разработки, такой как:

* 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 

Это более полно, так как в нем также перечислены не-gui-приложения, которые не будут отображаться в файлах .desktop

3
ответ дан 24 May 2018 в 10:50
  • 1
    Я не могу согласиться с этим ответом на этот вопрос. Ответ хороший, но не в этом месте. Достаточно ясно, что OP хочет список с приложениями, которые можно найти в Dash. И нет места для zsh, zsh-common и других! – Radu Rădeanu 16 March 2014 в 20:16
  • 2
    @ RaduRădeanu Я просто использовал хвост, чтобы показать отрывок из моих установленных пакетов, который заканчивается на z, если бы я использовал голову, они начнутся с: 2) он хочет приложения, перечисленные в «тире»? Ты уверен? – Braiam 16 March 2014 в 20:17
  • 3
    Брайам, это не о том, с чего начать с z или с ... Когда вы нажимаете Super + A на клавиатуре, что вы видите на экране, начиная с левого верхнего угла? – Radu Rădeanu 16 March 2014 в 20:29
  • 4
    @ Название RaduRădeanu OP гласит, что он хочет перечислить все приложения , установленные в его системе, за исключением библиотек, драйверов, ядер и т. Д. Он упоминает один из способов (который он использует), чтобы получить список приложений , который использует Super + A и который отображает только подмножество приложений, установленных в системе; но это охватывает большинство, если не всех .. ответ будет даже завершен с --no-gui удален. – precise 16 March 2014 в 23:16
  • 5
    .. Я забираю часть --no-gui, кажется, что это не так, как я думал. – precise 16 March 2014 в 23:28

Выполните следующую команду, чтобы просмотреть все установленные приложения,

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

Если вы хотите получить список всех установленных приложений, выполните следующую команду:

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' - > ~/Desktop/applications.txt
2] Он сохранит указанный выше вывод команды в файле applications.txt внутри вашего каталога ~/Desktop.

ИЛИ

Также запустите приведенную ниже команду на терминале, чтобы просмотреть установленные приложения, [ ! d4]

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

Чтобы получить список в текстовом файле, выполните приведенную ниже команду

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

Записи рабочего стола для всех установленных приложений хранятся внутри каталога /usr/share/applications, где имена файлов в формате application-name.desktop .Удаление части .desktop из имен файлов даст вам полный список установленных приложений.

Обновление:

Как предложили @Radu, вы также можно найти записи рабочего стола для ваших дополнительных установленных приложений внутри каталога ~/.local/share/applications.

find /usr/share/applications ~/.local/share/applications -maxdepth 1 -type f -exec basename {} .desktop \;
2
ответ дан 24 May 2018 в 10:50
  • 1
  • 2
    Спасибо Раду, сколько раз вы видели имя файла, содержащее новую строку? Никогда? Так и думал . Поэтому я никогда не должен использовать что-то очень полезное из-за краевого случая, которого практически никогда не бывает? Я думаю, что я продолжу разбор ls - для репрезентативных целей и для некритических задач, таких как выше, - и старайтесь иметь в виду это ограничение, спасибо за головы! – Rolf 13 May 2018 в 17:43

Если вам нужен список приложений, показанных при нажатии Super + A, вы можете использовать ls /usr/share/applications. Единственное, что вам нужно сделать, это заменить .desktop окончание, что является довольно простой задачей. Я делаю это с sed:

ls /usr/share/applications | sed s/.desktop// - > installed-apps.txt

Но вы можете сделать это после того, как получили список с помощью текстового редактора.

0
ответ дан 24 May 2018 в 10:50
  • 1
  • 2
    @Radu, на самом деле, файлы /usr/share/application/*.desktop не содержат каких-либо специальных символов, поэтому разрешен синтаксический разбор ls, особенно в этом случае. – Danatela 14 March 2014 в 12:35
  • 3
    Это не показывает все приложения, показанные при нажатии Super + A. – Radu Rădeanu 16 March 2014 в 20:48
  • 4
    @ Полу-бит, вы предполагаете, что ничего не случилось. Что, если я идиот и создал файл с именем bad name.desktop, например? Здесь нет причин рисковать ls. – terdon♦ 16 March 2014 в 23:34

Не знаю, почему большинство ответов было связано с извлечением имени файла .desktop ярлыков. Имя файла .desktop shortcut filename может быть чем угодно, но имеет значение поле Name внутри файла ярлыка. Если вы хотите создать список имен установленных приложений, отображаемых в Dash, просто «grep» это поле в [Desktop Entry]

Код Rudential, с bash

#!/bin/bash

for file in /usr/share/applications/*.desktop;
do
    while IFS== read -r key val
    do
        if [[ -z $key ]]; then
            continue
        else
            if [[ $key =~ ^\[Desktop\ Entry ]]; then
                interesting_field=1
            elif [[ $key =~ ^\[ ]]; then
                interesting_field=0
            fi
        fi
        [[ $interesting_field -eq 1 ]] && [[ $key == "Name" ]] && echo $val
    done < $file
done

Но это делает не учитывайте ярлыки, которые скрыты от показа в Dash. Кто-то, кто лучше понимает спецификацию .desktop, может захотеть продолжить расширение этого кода, чтобы исключить те виды ярлыков

Edit: еще одна попытка с Python

#!/usr/bin/python

from os import listdir
from os.path import isfile, join
import ConfigParser

SHORTCUTDIR = "/usr/share/applications/"

shortcuts = [ file for file in listdir(SHORTCUTDIR) if isfile(join(SHORTCUTDIR, file)) and file.endswith(".desktop") ]
dash_shortcuts = []

for f in shortcuts:
    c = ConfigParser.SafeConfigParser()
    c.read(SHORTCUTDIR + f)

    try:
        if c.getboolean('Desktop Entry', 'NoDisplay') is True:
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" in c.get('Desktop Entry', 'NotShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" not in c.get('Desktop Entry', 'OnlyShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    dash_shortcuts += [ c.get("Desktop Entry", "Name") ]

for s in sorted(dash_shortcuts, key=str.lower):
    print s
0
ответ дан 24 May 2018 в 10:50
  • 1
    Вы должны действительно расширить свой ответ, чтобы быть скорее ответом. – Seth♦ 16 March 2014 в 23:35
  • 2
    @Seth Я отправил слишком рано, извините. Я расчесывал голову, выясняя, как разбирать ini с bash – Flint 17 March 2014 в 10:16
  • 3
    @AvinashRaj Мне жаль, что это так просто, но это не правильный способ разобрать ini. Код будет взрываться и бросать шумы, если в .desktop, который вы разбираете, есть несколько записей Name, что всегда так. Также вы не должны предполагать, что все интересующие вас линии будут на фиксированном номере линии – Flint 17 March 2014 в 10:25
  • 4
    @AvinashRaj Все еще плохо: P Вы не учли, что опция Name может быть вне этого диапазона номера строки, особенно с множеством опций или пустых строк в [Desktop\ Entry ]. Файл .desktop является ini-файлом – Flint 17 March 2014 в 10:45

Пользователь спрашивает список имен всех установленных «приложений».

Что касается приложений с файлами .desktop:

, ответ Danatela касается приложений с файлами .desktop в /usr/share/applications, как указано Radu, приложения с файлами .desktop также можно найти в ~/.local/share/applications в этот момент, можно заметить, что приложения с файлами .desktop могут иметь два имени, одно «имя» доступно, запрашивая Dash в Unity или из меню в Xubuntu (например). Это имя выводится из строки Name= в соответствующем файле .desktop. Одним из примеров является «Карта символов». другое «имя» - это имя, которое будет использоваться при запуске приложения с терминала и первое слово после Exec=. В случае «Карты символов» это будет gucharmap. два имени (и файл .desktop) могут быть связаны с использованием: 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

Что касается приложений с файлами .desktop :

В зависимости от того, как определяется «приложение», у некоторых нет файлов .desktop.

ответ Danatela касается приложений с файлами .desktop в /usr/share/applications . Что относительно awk, find, grep, ls и , чтобы назвать еще несколько? Являются ли они приложениями или нет?

Если что-либо, у кого есть команда, рассматривается как приложение, тогда команда Linux для перечисления всех доступных команд и псевдонимов, и этот ответ поможет идентифицировать их.

0
ответ дан 24 May 2018 в 10:50

Другие вопросы по тегам:

Похожие вопросы: