# which mkdir
/bin/mkdir
# which mkdi
#
mkdir
在不知道二进制文件名的情况下如何获取eg: 的二进制文件的路径? (命令)。这样which mkdi
也会输出/bin/mkdir
。
答案1
在 zsh 中:
echo $path/mkdi*(N)
在其他壳中,供人类食用:
set -f; IFS=:
for x in $PATH; do set +f; ls $x/mkdi* 2>/dev/null; done
答案2
locate mkdi
更新:这将限制输出到$PATH
locate mkdi |
while read filename; do
[[ ":$PATH:" == *:$(dirname $filename):* ]] && echo $filename
done
答案3
run-parts
只要给出正确的参数,就可以做到这一点。这是我围绕它编写的一个简单的包装:
#!/bin/bash
# swhich - search the path (like which) but with support for regular expressions
# "swhich '.*ch$' '^wh'" to find all in path ending with 'ch' and all starting with 'wh'
set -f; IFS=:
for all in $PATH
do
set +f
for each in "$@"
do
run-parts --list --regex "$each" "$all"
done
done
答案4
compgen
是一个 BASH 内置命令,可以为给定的字符串生成补全。交换机-c
补全路径中的命令名称:
$ compgen -c mkd
mkdirhier
mkdir
mkdiskimage
mkdir
注意:mkdir
这里出现两次,因为它位于我系统上的 /bin 和 /usr/bin 中。
可编程完成很酷。它会让你做这样的事情:
$ shopt -s progcomp; complete -c which # set up progcomp
$ which mkd<ALT-*>
$ which mkdir mkdirhier mkdiskimage
...这可能更接近您正在寻找的东西。