帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:命令行  Group  已安装应用程序  列表  Comma  lis  type  COM  

问题:

需要在系统中安装的应用程序列表,但是我只想要按 开始菜单 列出的程序。

我对软件包/依赖项列表不感兴趣,因此以下内容没有帮助:


 dpkg --get-selections | grep -v deinstall



这个有点紧。


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



但是,名称与菜单中的内容不完全匹配,它不符合我对它们进行分组的其他标准。

e.g 我想看看


Graphics


 GIMP Image Editor



 
gimp



 

总结一下,我要寻找的是一种保存Alacarte显示的文本文件的方法。


回答 1:

以下 python 脚本从 /usr/share/applications 中的所有桌面文件读取( 英语或者 international* ) 接口名称,以及它们的Categories -section。 它列出所有找到的应用程序,根据它们的类别。 由于许多应用程序都有多个类别,应用程序可以出现在多个类别中。

如果应用程序没有提到 Categories=,那么在列表中的Uncategorized -section中会提到它。

为每个应用程序提供了大量的接口名称列表。 这个脚本是读取第一个接口名的,它是国际上使用的一个接口。 这个脚本可以修改为以特定的语言( 或者自动读取系统的语言) 读取名称,但这需要更广泛的编码:

使用英镑:

将下面的脚本复制到空文件中,将它的保存为 applist.py。 通过命令( 在终端窗口中) 运行它:


python3/path/to/script/applist.py



脚本:


#!/usr/bin/env python3


import os



uncategorized = []


categories = []


data = []


for item in os.listdir("/usr/share/applications"):


 if item.endswith(".desktop"):


 with open("/usr/share/applications/"+item) as data_source:


 lines = data_source.readlines()


 interface_name = [l.replace("n","").replace("Name=","") 


 for l in lines if l.startswith("Name=")][0]


 if len([l for l in lines if l.startswith("Categories")]) == 0:


 uncategorized.append(interface_name)


 else:


 subcats = [item for item in [l.replace("n","").replace(


"Categories=","") for l in lines if l.startswith(


"Categories=")][0].split(";") if item!=""]


 data.append([interface_name, subcats])


 categories = categories + subcats


categories = sorted([item for item in set(categories)])


for item in categories:


 applications = [subdata[0] for subdata in data if item in subdata[1]]


 print(item)


 for app in applications:


 print(""+app)


print("Uncategorized")


for item in uncategorized:


 print(""+item)



给出输出的印象:

我的输出中的一小部分:


Audio


 Audacity


 MuseScore


 PulseAudio Volume Control


 Rhythmbox


AudioVideo


 Cheese


 VLC media player


 Audacity


 Rhythmbox


 MuseScore


 Videos


 OpenShot Video Editor


 Brasero


 PulseAudio Volume Control


 Rhythmbox


AudioVideoEditing


 Audacity


 MuseScore


 OpenShot Video Editor


BoardGame


 Mahjongg


Calculator


 Calculator




回答 2:

下面的脚本将提供与你想要的输出非常相似的输出。


var=$(echo $(for f in/usr/share/applications/*.desktop;do cat $f|grep -i categories|sed -e 's/Categories=//g;s/;/n/g';done|sort|uniq))


for n in $var


do


 echo $n


 for f in/usr/share/applications/*.desktop


 do


 echo -e -n"t" $f|sed -e 's!/usr/share/applications/!!g;s/.desktop/::/g'


 echo $(cat $f |grep -i categories|sed -e 's/Categories=//g;s/;/:/g')


 done |grep -i :$n: |sed s/'::.*'//


done



将输出作为


...


Development


 bluefish


 boa-constructor


 eclipse


 gambas3


 GNUSim8085


 python2.7


 python3.2


 qtcreator


 ubuntusdk


DiscBurning


 brasero


 furiusisomount


Documentation


 yelp


...



说明

  • var: 存储所有可能类别的列表。
  • 内部循环查找包含由外部循环提供的类别的应用程序列表。 内部循环也输出所需的所有内容。

我还尝试了另一个脚本输出真实名称( GIMP图像编辑器) 而不是包 name(gimp),但它给出了奇怪的结果,因为某些桌面文件不包含


回答 3:

如果你运行以下命令:


dpkg-query -W --showformat='${Package} ${Version} ${Section}n'> filesystem.manifest



然后 filesystem.manifest 看起来像这样:


abiword-common 2.9.2+svn20120213-1 editors


accountsservice 0.6.15-2ubuntu9.7 admin


acl 2.2.51-5ubuntu1 utils


acpi-support 0.140.1 admin


acpid 1:2.0.10-1ubuntu3 admin


activity-log-manager-common 0.9.4-0ubuntu3.2 utils


activity-log-manager-control-center 0.9.4-0ubuntu3.2 utils


adduser 3.113ubuntu2 admin


adium-theme-ubuntu 0.3.2-0ubuntu1 gnome



这显示了应用程序的所有细节。

 
apt-cache show zim



 



文章标签:COM  COMM  lis  列表  Comma  type  命令行  Group  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语