Bash 如何获取所有可用shell命令的列表
在典型的LinuxShell(bash)中,可以点击tab两次,以获得所有可用shell命令的列表 是否存在具有相同行为的命令?我想通过管道将它导入grep并搜索它。两次“tab”&“y”打印$PATH路径中的所有文件。所以只需打印路径中的所有文件就足够了 只需在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
# 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$