如何在不编写自己的解析器的情况下获取已安装应用程序的列表(基于 /usr/share/applications/ 中的文件)?我只需要应用程序名称、应用程序图标路径和启动应用程序的路径。
我将 C++ 与 Qt 库一起使用。当然,你可以给我写 shell 命令或其他类似的东西。
给你。以下命令的结果是逗号分隔值的列表。第一列:.desktop 条目的路径,第二列:图标的路径,第三列:可执行文件。
find /usr/share/applications/ -name '*.desktop' -exec perl -ne 'BEGIN { $pname = $ARGV[0] ; } ; /(Icon|Exec)=(.*)/ and $ret{$1} = $2 ; END { printf "%s,%s,%s\n", $pname, $ret{Icon}, $ret{Exec} ; }' {} \;
Run Code Online (Sandbox Code Playgroud)
说明:find准备 /usr/share/applications 或其子目录中以 .desktop 结尾的文件列表,并调用 ( -exec ... {} \;) perl oneliner 来解析该信息。
-nPerl 以创建一个迭代给定文件的每一行的隐式循环的选项和-e指定运行所提供的参数的选项启动。
perl 程序包含在解析每个 .desktop 文件之前和之后运行的 BEGIN 和 END 块(每次为每个已find定位的文件单独调用 perl oneliner)。BEGIN 块记录文件名(作为 oneliner 的第一个参数给出,即 的编译指示{})find,END 块以逗号分隔的方式总结信息。
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |