是否有一个Linux命令将列出此终端会话的所有可用命令和别名?
就好像你输入“a”,然后按下tab键,不过是针对字母表中的每个字母。 或者运行'alias',但也返回命令。
为什么?我想运行以下命令,看看是否有可用的命令:
ListAllCommands | grep searchstr
是否有一个Linux命令将列出此终端会话的所有可用命令和别名?
就好像你输入“a”,然后按下tab键,不过是针对字母表中的每个字母。 或者运行'alias',但也返回命令。
为什么?我想运行以下命令,看看是否有可用的命令:
ListAllCommands | grep searchstr
当前回答
试试这个脚本:
#!/bin/bash
echo $PATH | tr : '\n' |
while read e; do
for i in $e/*; do
if [[ -x "$i" && -f "$i" ]]; then
echo $i
fi
done
done
其他回答
对于Mac用户(find没有-executable, xargs没有-d):
echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
在到达debian: ls / bin / | grep whatImSearchingFor "
你可以使用bash(1)内置的compgen
Compgen -c将列出您可以运行的所有命令。 Compgen -a会列出所有你可以运行的别名。 Compgen -b会列出所有你可以运行的内置程序。 Compgen -k将列出所有你可以运行的关键字。 compgen -一个函数将列出所有你可以运行的函数。 compgen -A function -abck将一次性列出上述所有内容。
检查手册页,查看您可以生成的其他完成。
直接回答你的问题:
compgen -ac | grep searchstr
应该做你想做的事。
你为什么不直接输入:
seachstr
在终点站。
外壳会说
seacrhstr: command not found
编辑:
好吧,我投反对票,因为这个答案很愚蠢,我只是想知道:这个答案有什么问题!!提问者说:
并查看是否有命令可用。
输入命令将告诉您该命令是否可用!
可能他/她的意思是“不执行命令”或“将其包含在脚本中”,但我无法读懂他的想法(并不是我不能经常读懂,只是他穿着一件 读心术偏转器)
其他命令在嵌入式系统上对我不起作用,因为它们需要bash或更完整的xargs版本(busybox是有限的)。
以下命令可以在任何类unix系统上运行。
按文件夹列出:
ls $(echo $PATH | tr ':' ' ')
按名称列出所有命令
ls $(echo $PATH | tr ':' ' ') | grep -v '/' | grep . | sort