"which"에 대한 "grep"과 같은 솔루션이 있습니까?

"which"에 대한 "grep"과 같은 솔루션이 있습니까?
# 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에 있기 때문에 두 번 나타납니다.

프로그래밍 가능한 완성이 멋지네요. 다음과 같은 작업을 수행할 수 있습니다.

$ shopt -s progcomp; complete -c which # set up progcomp
$ which mkd<ALT-*>
$ which mkdir mkdirhier mkdiskimage

...이것이 당신이 찾고 있는 것에 더 가까울 수도 있습니다.

관련 정보