如何在 bash 中搜索可用命令

hgi*_*sel 6 shell bash

所以我可以输入systemc并按下Tab并获取systemctl

但是如果我想列出所有以 结尾的命令ctl怎么办?

我该怎么做?

xhi*_*nne 12

要列出所有可用的命令,包括别名、函数、bash 内置命令和 bash 关键字,请使用compgen -c. 您可以grep使用任何模式生成结果列表,例如:

compgen -c | grep 'ctl$'
Run Code Online (Sandbox Code Playgroud)


Jef*_*eff 6

如果您使用,apropos ctl | less您将看到所有包含字符串 ctl 的命令,其中包括手册页。它还会显示其他一些包含该字符串的内容,但这些意外结果中出奇地少,因此您可能会发现它非常有用。


roa*_*ima 2

没有什么可以阻止您搜索$PATH匹配的文件

( IFS=:; for p in $PATH; do ls -d "$p"/*ctl; done ) 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

我使用了子 shell,( ... )因为我正在更改 shell 变量IFS。另一种方法是在开始时保存它 ( OIFS="$IFS" IFS=:) 并在之后恢复它 ( IFS="$OIFS") 但对我来说,这感觉稍微不太健壮。