web-dev-qa-db-ja.com

システムにインストールされているすべてのアプリケーションを一覧表示するにはどうすればよいですか?

私は知っている、私はちょうど打つことができます Super+A Ubuntuにインストールされているすべてのアプリを表示するには、名前を一覧表示するコマンドが必要です。コマンド

dpkg --get-selections | awk '{print $1}'

また、インストールされているすべてのパッケージが表示され、ドライバー、カーネル、およびライブラリが含まれているため、オプションではありません。

17
Danatela

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)を削除しました。


更新:

ダッシュで表示されるアプリケーションを見つけることができるもう1つの場所は、~/.local/share/applications/*.desktopです。したがって、次のコマンドも実行する必要があります。

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

前の2つのコマンドを統合するには、次を使用できます。

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

インストールされているすべてのアプリケーションとその名前のリストを取得するには、最も簡単な方法があります。

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 

.desktopファイルに表示されない非GUIアプリケーションもリストするため、より完全です。

4
Braiam

以下のコマンドを実行して、インストールされているすべてのアプリケーションを表示します。

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

インストールされているすべてのアプリケーションのリストを取得するには、次のコマンドを実行します。

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

上記のコマンド出力をapplications.txtディレクトリ内の~/Desktopファイルに保存します。

OR

また、ターミナルで次のコマンドを実行して、インストールされているアプリケーションを一覧表示します。

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 \;
3
Avinash Raj

質問者は、インストールされているすべての「アプリ」の名前をリストしたいと考えています。

.desktopファイルを使用するアプリについて

  • Danatelaの回答/usr/share/applicationsに.desktopファイルがあるアプリを扱っています
  • Raduが指摘 のように、.desktopファイルを含むアプリは~/.local/share/applicationsにもあります。
  • この時点で、.desktopファイルを使用するアプリには、twoの名前を付けることができます。
    • 1つの「名前」は、Unityでダッシュを照会するか、Xubuntuのメニューから(たとえば)照会することで使用できます。この名前は、それぞれの.desktopファイルのName=行から派生しています。 1つの例は「文字マップ」です。
    • もう1つの「名前」は、端末からアプリを実行するときに使用される名前で、Exec=の後の最初のWordです。 「文字マップ」の場合、それはgucharmapになります。
  • 2つの名前(および.desktopファイル) 関連する可能性があります using:
    • 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ファイルがないものもあります。

  • conkypoppler-utilsqpdfxdotool、およびwmctrlのようなものは「アプリ」と見なされますか?これらはどのように識別され、名前でリストされますか(インストールされていると仮定)?
  • awkfindgreplsおよびsedについてはどうですか?アプリですか、そうではありませんか?

コマンドを含むanythingがアプリと見なされる場合、 利用可能なすべてのコマンドとエイリアスを一覧表示するLinuxコマンド および この回答があります) はそれらを識別するのに役立ちます。

0
DK Bose

投稿された回答のほとんどが.desktopショートカットのファイル名の抽出に関係している理由がわかりません。 .desktopショートカットファイル名は何でも構いませんが、重要なのはショートカットファイル内のNameフィールドです。 Dashに表示されるインストール済みアプリケーション名のリストを作成する場合は、[Desktop Entry]の下のフィールドを「grep」するだけです

基本コード、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の仕様をよく理解している人は、このコードをさらに拡張して、これらの種類のショートカットを除外することをお勧めします。

編集: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
Flint

ヒットしたときに表示されるアプリケーションのリストが必要な場合 Super+Als /usr/share/applicationsを使用できます。あなたがすべき唯一のことは、非常に簡単なタスクである.desktop終了を置き換えることです。私はsedでそれをします:

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

ただし、テキストエディタを使用してリストを受け取った後、それを行うことができます。

0
Danatela