私は知っている、私はちょうど打つことができます Super+A Ubuntuにインストールされているすべてのアプリを表示するには、名前を一覧表示するコマンドが必要です。コマンド
dpkg --get-selections | awk '{print $1}'
また、インストールされているすべてのパッケージが表示され、ドライバー、カーネル、およびライブラリが含まれているため、オプションではありません。
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
インストールされているすべてのアプリケーションとその名前のリストを取得するには、最も簡単な方法があります。
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アプリケーションもリストするため、より完全です。
以下のコマンドを実行して、インストールされているすべてのアプリケーションを表示します。
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
の形式です。ファイル名から.desktop
部分を削除すると、インストール済みアプリケーション。
更新:
@ Raduが示唆したように 、追加のインストール済みアプリケーションのデスクトップエントリを~/.local/share/applications
ディレクトリ内に見つけることもできます。
find /usr/share/applications ~/.local/share/applications -maxdepth 1 -type f -exec basename {} .desktop \;
質問者は、インストールされているすべての「アプリ」の名前をリストしたいと考えています。
.desktopファイルを使用するアプリについて:
/usr/share/applications
に.desktopファイルがあるアプリを扱っています~/.local/share/applications
にもあります。Name=
行から派生しています。 1つの例は「文字マップ」です。Exec=
の後の最初のWordです。 「文字マップ」の場合、それは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
についてはどうですか?アプリですか、そうではありませんか?コマンドを含むanythingがアプリと見なされる場合、 利用可能なすべてのコマンドとエイリアスを一覧表示するLinuxコマンド および この回答があります) はそれらを識別するのに役立ちます。
投稿された回答のほとんどが.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
ヒットしたときに表示されるアプリケーションのリストが必要な場合 Super+A、ls /usr/share/applications
を使用できます。あなたがすべき唯一のことは、非常に簡単なタスクである.desktop
終了を置き換えることです。私はsed
でそれをします:
ls /usr/share/applications | sed s/.desktop// - > installed-apps.txt
ただし、テキストエディタを使用してリストを受け取った後、それを行うことができます。