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


18

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

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

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

回答:


17

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


更新:

ダッシュで表示されるアプリケーションを見つけることができる別の場所はです~/.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

4

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

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アプリケーションもリストするため、より完全です。


この質問に対するこの答えには同意できません。答えはいいですが、この場所ではありません。OPがDashにあるアプリケーションのリストを必要としていることは十分に明確です。zshzsh-commonおよび他の場所はありません!
ラドゥラディアナヌ

@RaduRădeanuインストールしたパッケージの抜粋を表示するためにtailを使用しましたが、zで終わります。headを使用した場合、aで始まります。本気ですか?
14年

Braiamは、zで始まるかaで始まるかではありません...キーボードでSuper + Aを押すと、画面の左上から何が表示されますか?
ラドゥラディアナヌ14年

1
@RaduRădeanuOPのタイトルは、ライブラリ、ドライバー、カーネルなどを除く、システムにインストールされているすべてのアプリケーションを一覧表示することを望んでいることを示しています。システムにインストールされているアプリケーションのサブセットを表示するだけです。しかし、これはすべてではないにしてもほとんどをカバーします。答えは--no-gui削除されても完全です。
正確な14年

1
..私はその--no-gui部分を取り戻します。
正確な14年

3

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

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

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

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

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

または

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

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.Removing .desktopあなたにインストールされたアプリケーションの合計リストを与えるファイル名からパーツを。

更新:

@Raduが示唆したように、追加のインストール済みアプリケーションのデスクトップエントリを~/.local/share/applicationsディレクトリ内で見つけることもできます。

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


Raduに感謝しますが、改行を含むファイル名を何回見ましたか?決して?そう思った 。だから、私はこれまでほとんど発生しないエッジケースのために非常に有用なものを決して使用すべきではありませんか?ls表現を目的として、また上記のような重要ではないタスクのために、解析を続け、この制限を念頭に置いて、頑張ってくれてありがとう!
ロルフ

0

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

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

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



2
@Radu、実際には、/usr/share/application/*.desktopファイルには特殊文字が含まれていないため、ls特にこの場合の解析は許可されます。
ダナテラ

これは、Super + Aを押したときに表示されるすべてのアプリケーションをリストするわけではありません。
ラドゥラデアヌ

4
@ Semi-bitは、何も問題がないと仮定しています。私がばかで、bad name.desktopたとえばというファイルを作成した場合はどうなりますか?lsここでリスクを負う理由はありません。
テルドン14年

0

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

基本コード、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

3
あなたは本当にもっと答えになるようにあなたの答えを広げるべきです。
セス14年

@Sethすぐに投稿しました、ごめんなさい。私はbashのでiniファイル解析する方法を考え出すの私の頭を悩また
フリント

@AvinashRaj私はそれがそんなに簡単であることを望みますが、それはiniを解析する適切な方法ではありません。Name解析している.desktopに複数のエントリがある場合、コードは爆発してノイズをスローします。これは常に当てはまります。また、あなたはあなたが興味を持っているすべての行が固定回線数になりますと仮定してはならない
フリント

@AvinashRajまだ悪い:P Nameオプションが行番号の範囲外になる可能性があることを考慮していませんでした[Desktop\ Entry ]。.desktopファイルはiniファイルです
フリント14年

0

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

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

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

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

場合は何もコマンドを持っているアプリとして考えられている、その後、使用可能なすべてのコマンドとエイリアスリストするLinuxコマンド、この答えがそこにそれらを識別するのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.