# which mkdir
/bin/mkdir
# which mkdi
#
mkdir
たとえば、バイナリファイル名を知らず、バイナリファイルのパスを取得する方法は? (注文する)。これも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にあるため、2回表示されます。
プログラマブルな仕上がりが素敵ですね。次の操作を実行できます。
$ shopt -s progcomp; complete -c which # set up progcomp
$ which mkd<ALT-*>
$ which mkdir mkdirhier mkdiskimage
...これはあなたが探しているものに近いかもしれません。