Я придумал этот ответ для людей, которые хотят правильно использовать bash. Понятно, что ответ на вопрос связан со списком файлов /usr/share/applications
, но проблема в том, что ls
команда не должна анализироваться никогда . В прошлом я делал ту же ошибку, но теперь я узнал, что лучший способ - использовать for
цикл для итерации по файлам, даже если мне нужно использовать еще несколько клавиш с моей драгоценной клавиатуры:
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
Я также использовал в предыдущих операциях манипуляции командной строки : удалены из app
первых 24 символов /usr/share/applications/
и последних 8 символов .desktop
.
Обновить:
Другое место, где вы можете найти приложения, показанные Dash, это ~/.local/share/applications/*.desktop
. Поэтому вам также нужно выполнить следующую команду:
for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done
Чтобы объединить две предыдущие команды, вы можете использовать:
for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done
zsh
,zsh-common
и другие!--no-gui
удаленным.--no-gui
часть, кажется, ее там нет, как я и думал.Запустите команду ниже, чтобы увидеть все установленные приложения,
Если вы хотите получить список всех установленных приложений, выполните следующую команду:
Он сохранит вышеприведенный вывод команды в
applications.txt
файл внутри вашего~/Desktop
каталога.ИЛИ
Также запустите приведенную ниже команду на терминале, чтобы просмотреть список установленных приложений:
Чтобы получить список в текстовом файле, выполните команду ниже
Записи рабочего стола для всех установленных приложений хранятся в
/usr/share/applications
каталоге, где имена файлов имеют формат.application-name.desktop
Удаление.desktop
части из имен файлов даст вам полный список установленных приложений.Обновить:
Как предложил @Radu , вы также можете найти записи рабочего стола для ваших дополнительных установленных приложений внутри
~/.local/share/applications
каталога.источник
ls
команда не должна анализироваться никогда !ls
- для представительских целей и для некритических задач, таких как приведенная выше, - и постараюсь учесть это ограничение, спасибо за внимание!Если вам нужен список приложений, отображаемых при нажатии Super+ A, вы можете использовать
ls /usr/share/applications
. Единственное, что вам нужно сделать, это заменить.desktop
окончание, что является довольно простой задачей. Я делаю это сsed
:Но вы можете сделать это после того, как вы получили список с помощью текстового редактора.
источник
ls
команда не должна анализироваться никогда !/usr/share/application/*.desktop
файлы не содержат никаких специальных символов, так чтоls
в этом случае анализ разрешен.bad name.desktop
например? Здесь нет причин рисковатьls
.Не уверен, почему большинство опубликованных ответов включает в себя извлечение имени файла ярлыков .desktop. Ваше имя файла ярлыка .desktop может быть любым, но имеет значение
Name
поле внутри файла ярлыка. Если вы хотите построить список установленных имен приложений, отображаемых в Dash, просто "grep" это поле под[Desktop Entry]
Рудиментальный код, с bash
Но это не учитывает ярлыки, которые скрыты от показа в Dash. Кто-то, кто лучше понимает спецификацию .desktop, может захотеть еще больше расширить этот код, чтобы исключить подобные ярлыки.
Изменить: еще одна попытка, с Python
источник
Name
в .desktop есть несколько записей, которые вы анализируете, что всегда имеет место. Также не следует полагать, что все интересующие вас линии будут на фиксированном номереName
опция может быть за пределами этого диапазона номера строки, особенно с большим количеством опций или пустых строк[Desktop\ Entry ]
. И файл .desktop является INI-файломСпрашивающий хочет перечислить имена всех установленных «приложений».
Что касается приложений с файлами .desktop :
/usr/share/applications
~/.local/share/applications
Name=
строки в соответствующем файле .desktop. Одним из примеров является «Карта персонажей».Exec=
. В случае с «картой персонажей» это будетgucharmap
.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.
conky
,poppler-utils
,qpdf
,xdotool
иwmctrl
считаются «приложение»? Как их идентифицировать и перечислить по их именам (при условии, что кто-то их установил)?awk
,find
,grep
,ls
иsed
назвать еще? Это приложения или нет?Если что-либо , имеющее команду, рассматривается как приложение, то команда Linux для вывода списка всех доступных команд и псевдонимов и этого ответа поможет идентифицировать их.
источник