是否有一个Linux命令将列出此终端会话的所有可用命令和别名?

就好像你输入“a”,然后按下tab键,不过是针对字母表中的每个字母。 或者运行'alias',但也返回命令。

为什么?我想运行以下命令,看看是否有可用的命令:

ListAllCommands | grep searchstr

当前回答

问题是选项卡补全正在搜索您的路径,但并非所有命令都在您的路径中。

使用bash查找路径中的命令,你可以这样做:

在echo $PATH | cut -d":" -f1;做ls $x;完成

其他回答

下面是一个解决方案,它为您提供了所有可执行文件和别名的列表。它也可以移植到没有xargs -d的系统(例如Mac OS X),并正确处理包含空格的路径。

#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"

使用:myscript.sh [grep-options]模式,例如找到所有以ls开头的命令,不区分大小写,执行:

myscript -i ^ls

这就是

type -a mycommand

命令列出了mycommand在$PATH中使用的所有别名和命令。可用于检查该命令是否存在多个变体。除此之外……可能有一些脚本解析$PATH和所有别名,但不知道有这样的脚本。

在到达debian: ls / bin / | grep whatImSearchingFor "

其他命令在嵌入式系统上对我不起作用,因为它们需要bash或更完整的xargs版本(busybox是有限的)。

以下命令可以在任何类unix系统上运行。

按文件夹列出:

ls $(echo $PATH | tr ':' ' ')

按名称列出所有命令

ls $(echo $PATH | tr ':' ' ') | grep -v '/' | grep . | sort

问题是选项卡补全正在搜索您的路径,但并非所有命令都在您的路径中。

使用bash查找路径中的命令,你可以这样做:

在echo $PATH | cut -d":" -f1;做ls $x;完成