如何在 bash 中搜索可用命令

如何在 bash 中搜索可用命令

这样我就可以输入systemc并按Tab并获取systemctl

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

我该怎么做呢?

答案1

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

compgen -c | grep 'ctl$'

答案2

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

答案3

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

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

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

答案4

我会使用以下方法来做到这一点find

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl"; done )

仅显示 cmd:

( IFS=:; for dir in $PATH; do find $dir/ -type f -executable -iregex ".*ctl" -printf '%f\n'; done ) 2>/dev/null

相关内容