Bash 如何获取所有可用shell命令的列表

Bash 如何获取所有可用shell命令的列表,bash,shell,Bash,Shell,在典型的LinuxShell(bash)中,可以点击tab两次,以获得所有可用shell命令的列表 是否存在具有相同行为的命令?我想通过管道将它导入grep并搜索它。两次“tab”&“y”打印$PATH路径中的所有文件。所以只需打印路径中的所有文件就足够了 只需在shell中键入以下内容: # printf "%s\n" ${PATH//:/\/* } > my_commands 这会将所有命令重定向到一个文件“my_commands”。您的路径上可能有一些东西实际上不可执行 #!/b

在典型的LinuxShell(bash)中,可以点击tab两次,以获得所有可用shell命令的列表

是否存在具有相同行为的命令?我想通过管道将它导入grep并搜索它。

两次“tab”&“y”打印$PATH路径中的所有文件。所以只需打印路径中的所有文件就足够了

只需在shell中键入以下内容:

 # printf "%s\n" ${PATH//:/\/* } > my_commands

这会将所有命令重定向到一个文件“my_commands”。

您的路径上可能有一些东西实际上不可执行

#!/bin/sh
for d in ${PATH//:/ }; do
  for f in "$d"/*; do
    test -x "$f" && echo -n "$f "
  done
done
echo ""
当然,这也会打印路径。如果您只想要不合格的文件名,那么应该很容易适应它


有趣的是,StackOverflow不知道如何处理此项的语法突出显示。:-)

如果首先调整字段分隔符,则可以直接从
$PATH
列出目录。parens将效果限制为一个命令,因此请使用:
(…)| grep…

(IFS=': '; ls -1 $PATH)

tabtaby类似于@ghoti,但使用find:

#!/bin/sh
for d in ${PATH//:/ }; do
    find $d -maxdepth 1 -type f -executable
done

Bash使用名为“complete”的内置命令来实现选项卡功能

我手头没有详细资料,但报告应该告诉你所有你需要知道的:

help complete 
但是它不包括shell内置组件。

一个答案被删除了,我最喜欢它,所以我尝试重新发布它:

康普根当然更好

echo $PATH | tr ':' '\n' | xargs -n 1 ls -1
我发现这是最典型的shell,我认为它也适用于其他shell(我怀疑像
IFS=':'


很明显,如果文件不是可执行文件,可能会有问题,但我认为对于我的问题,这就足够了-我只想
grep
我的输出-这意味着搜索一些命令。

列出
路径变量中的所有文件(ls路径中的所有目录)。默认的用户和系统命令分别位于/bin和/sbin中,但在安装某些软件时,我们会将它们添加到某个目录中,并使用PATH变量将其链接。

您可以使用compgen。例如:

compgen -c
你也可以这样做:

compgen -c | grep top$

资料来源:

下面的答案告诉你怎么做。如果你告诉我们原因,我想你会受益更多。对于我的设置,我只需要按一下tab键
compgen -c | grep top$