![是否有任何软件或命令可以让我调出外部命令列表](https://linux22.com/image/1178305/%E6%98%AF%E5%90%A6%E6%9C%89%E4%BB%BB%E4%BD%95%E8%BD%AF%E4%BB%B6%E6%88%96%E5%91%BD%E4%BB%A4%E5%8F%AF%E4%BB%A5%E8%AE%A9%E6%88%91%E8%B0%83%E5%87%BA%E5%A4%96%E9%83%A8%E5%91%BD%E4%BB%A4%E5%88%97%E8%A1%A8.png)
我的标题可能令人困惑,但举个例子可能有助于理解我的问题。例如:
我从以下位置安装了名为 bpytop 的资源监视器https://github.com/aristocratos/bpytop。现在,如果我打开终端并输入命令,bpytop
程序就会启动。很好吧?现在我继续安装 y-ppa-manager 以及我们在终端中输入以打开的其他程序。
现在几天/几周/几个月过去了,我记不起要调出的命令bpytop
,或者我想查看所有可以在终端中输入的命令,这些命令将通过终端执行程序。
是否有任何程序或命令可以像这样保存所有外部终端命令?
答案1
与其他答案不同,我的答案非常简单。
我保留了一个方便的文本文档,其中包含代码片段、已安装应用程序的命令 - 或者至少是如何启动它们,以及诸如此类的东西。
然后,除此之外,我使用别名函数对于很多事情来说。我使用别名来使命令更容易记住,或者至少更容易猜到。
例如:
alias update="sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt clean -y"
因此,当我想要更新时,我只需在终端中输入“更新”,它就会为我完成所有这些过程,无需任何额外的监督。
接下来,也可能是最重要的一点,我在多个安装中甚至在完全不同的操作系统中使用这些别名。如果我使用 zypper,那么我可以使用相同的命令,但通过别名使用不同的后端。我不必记住所有各种命令,因为我记得别名。
我还保存了方便使用的文本文档,方便地将linuxterminalnotes.txt
其命名为“文件”,并与我拥有的其他计算机共享。它不需要高科技解决方案,只需要网络连接或 USB 拇指驱动器。
唯一需要做的就是更新它。如果我安装了需要神秘终端条目的新东西,我会将其保存到文件中。我会将此文件以及我的各种别名文件备份到多个设备和多个位置。我唯一需要的技术是一个简单的文本编辑器。
答案2
如果你能记住(或猜出)命令的前几个字母,那么你可以使用 bash shell 的compgen
内置命令来生成可能的命令补全前任。
compgen -A command bp
如果您不记得有关该命令的任何信息,那么compgen -A command
或等效地compgen -c
会为您提供所有可用命令的详尽列表 - 但它可能太长而无用(您可以将结果传输到less
以便更容易翻阅)。
请注意,command
此上下文包括 shell 内置命令、别名、函数和关键字。您可以按如下方式排除这些内容:
comm -23 <(compgen -c | sort) <({ compgen -abk ; compgen -A function; } | sort) | less
答案3
没有列出所有外部可执行文件的命令。但是,该工具dmenu
附带一个小脚本,用于收集列表中的所有可执行文件。它被称为dmenu_path
并具有以下内容:
#!/bin/sh
cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
cache="$cachedir/dmenu_run"
[ ! -e "$cachedir" ] && mkdir -p "$cachedir"
IFS=:
if stest -dqr -n "$cache" $PATH; then
stest -flx $PATH | sort -u | tee "$cache"
else
cat "$cache"
fi
您可以安装dmenu
该脚本,也可以在您自己的脚本中复制/修改该脚本,listexecs
以便获得列出所有可执行文件的命令。
找到命令的最简单方法可能就是运行dmenu_run
。这将在 dmenu 菜单系统中显示该列表。您可以键入几个字母来缩小列表范围,然后使用 dmenu 的搜索功能找到您要查找的命令的名称。esc完成后按 。Enter将运行该应用程序。