我曾尝试卸载终端中的许多应用程序,因为有些应用程序未显示在 Ubuntu 软件应用程序中。每次我这样做时,我都必须搜索互联网,因为很难知道如何在终端中输入应用程序的名称。例如,FreeOffice 在终端中的名称是sofmaker-freeoffice-2023
,而其他应用程序的名称则不同。
有没有什么办法可以知道使用终端卸载应用程序的名称,而无需搜索互联网?
答案1
这回答了具体的问题“有没有办法知道使用终端卸载应用程序的名称,而无需搜索互联网?”和“我如何才能找到应用程序的名称并在终端中删除它们?”。如果您想使用该信息也使用终端将其删除,那么知道启动程序的可执行文件的名称可能还不够。
对于菜单系统中的应用程序,搜索系统的.desktop
启动器是一种好方法。.desktop
启动器是带有扩展名的小文本文件.desktop
,用于告诉操作系统有关已安装应用程序的各种信息。
您可以根据菜单中显示的内容找到此类启动器。例如,LO Writer 的启动器将包含以 开头的一行字符串Name=
。当您在文本编辑器中打开该启动器时,您将看到 后指定的可执行文件Exec=
。
您可以使用任何工具根据内容搜索文件,但是,我有一个小脚本,我将其命名为whichdesktop
,用于搜索.desktop
文件:
内容whichdesktop
:
#!/bin/bash
IFS=$" :"
DIR="$HOME/.local/share/applications"
for d in $XDG_DATA_DIRS; do
d=$(echo "$d" | sed -e 's/\/$//')
[ -d $d/applications ] && DIR="$DIR $d/applications"
done
find -L $DIR -name '*.desktop' -exec grep -H "$1" {} \;
它列出可以安装启动器的目录.desktop
,然后调用find
以仅搜索这些目录。
例如,如果我想知道 LibreOffice Writer 的可执行文件叫什么,我可以运行:
$ whichdesktop "LibreOffice Writer"
/usr/share/applications/libreoffice-writer.desktop:Name=LibreOffice Writer
$ cat /usr/share/applications/libreoffice-writer.desktop | grep Exec=
Exec=libreoffice --writer %U
Exec=libreoffice --writer
这表明该可执行文件被调用libreoffice
。
答案2
自动完成功能可能会提供部分帮助,这对于 apt 来说非常有用:
sudo apt remove sof->->
两个->
箭头表示 Tab 键,将显示所有要删除的候选文件,仅考虑已安装的软件。
但你还是得知道名字的开头。至少它会检测出拼写错误。
apropos 命令可能很有用,可以找到您知道部分名称或可以猜出描述重要部分的程序:
apropos office
应该会为您提供名称包含字符串“office”或描述以某种方式匹配的程序列表。从那里,您通常可以缩小选择范围。