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

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

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

ListAllCommands | grep searchstr

当前回答

使用"which searchstr"。返回二进制文件的路径或别名设置(如果它是别名)

编辑: 如果你正在寻找一个别名列表,你可以使用:

alias -p | cut -d= -f1 | cut -d' ' -f2

添加到任何你喜欢的路径搜索答案。假设您正在使用bash..

其他回答

你为什么不直接输入:

seachstr

在终点站。

外壳会说

seacrhstr: command not found 

编辑:

好吧,我投反对票,因为这个答案很愚蠢,我只是想知道:这个答案有什么问题!!提问者说:

并查看是否有命令可用。

输入命令将告诉您该命令是否可用!

可能他/她的意思是“不执行命令”或“将其包含在脚本中”,但我无法读懂他的想法(并不是我不能经常读懂,只是他穿着一件 读心术偏转器)

尝试按ALT-?(alt和问号同时输入)。给它一两秒钟的时间来构建列表。它应该在bash中工作。

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

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

按文件夹列出:

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

按名称列出所有命令

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

这就是

type -a mycommand

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

下面是一个你可以放在bashrc文件中的函数:

function command-search
{
   oldIFS=${IFS}
   IFS=":"

   for p in ${PATH}
   do
      ls $p | grep $1
   done

   export IFS=${oldIFS}
}

使用示例:

$ command-search gnome
gnome-audio-profiles-properties*
gnome-eject@
gnome-keyring*
gnome-keyring-daemon*
gnome-mount*
gnome-open*
gnome-sound-recorder*
gnome-text-editor@
gnome-umount@
gnome-volume-control*
polkit-gnome-authorization*
vim.gnome*
$

供您参考:IFS是bash用来拆分字符串的变量。

当然,有一些更好的方法可以做到这一点。