"which"에 대한 인수로 glob 패턴을 사용합니다.

"which"에 대한 인수로 glob 패턴을 사용합니다.

which여러 결과를 반환하기 위해 glob 패턴에서 이 명령을 사용할 수 있습니까 ?

latex예를 들어 모든 명령의 전체 경로를 알고 싶습니다 . 내가 시도 할 수 있습니다:

[lucas@lucas-ThinkPad-W520]/home/lucas$ which latex
/usr/bin/latex

또는:

[lucas@lucas-ThinkPad-W520]/home/lucas$ which pdflatex 
/usr/bin/pdflatex

또는:

[lucas@lucas-ThinkPad-W520]/home/lucas$ which xelatex 
/usr/bin/xelatex

하지만 다음은 사용할 수 없습니다.

[lucas@lucas-ThinkPad-W520]/home/lucas$ which *latex

아무것도 반환하지 않습니다.

which명령에서 glob 패턴을 사용하는 방법에 대한 제안 사항이 있습니까?

답변1

사용하십시오 zsh( 또는 which에만 내장되어 있으며 다른 쉘에서는 Bourne과 같은 쉘에서 사용되는 임의의 결과를 제공할 수 있음 ):tcshzshtype

$ which -m '*latex'
/usr/bin/arlatex
/usr/bin/dvilualatex
/usr/bin/fig4latex
/usr/bin/latex
/usr/bin/lualatex
/usr/bin/pdflatex
/usr/bin/pod2latex
/usr/bin/pslatex

또는 (함수, 별칭이 아닌 실행 파일만 고려하려는 경우...):

$ ls -ld $^path/*latex(-*DN)
lrwxrwxrwx 1 root root    53 Apr  8 03:14 /usr/bin/arlatex -> ../share/texlive/texmf-dist/scripts/bundledoc/arlatex*
lrwxrwxrwx 1 root root     6 Apr  8 03:51 /usr/bin/dvilualatex -> luatex*
lrwxrwxrwx 1 root root    55 Apr  8 03:51 /usr/bin/fig4latex -> ../share/texlive/texmf-dist/scripts/fig4latex/fig4latex*
lrwxrwxrwx 1 root root     6 Apr  8 03:51 /usr/bin/latex -> pdftex*
lrwxrwxrwx 1 root root     6 Apr  8 03:51 /usr/bin/lualatex -> luatex*
lrwxrwxrwx 1 root root     6 Apr  8 03:51 /usr/bin/pdflatex -> pdftex*
-rwxr-xr-x 1 root root 10340 May 20  2013 /usr/bin/pod2latex*
lrwxrwxrwx 1 root root    54 Apr  8 03:14 /usr/bin/pslatex -> ../share/texlive/texmf-dist/scripts/texlive/pslatex.sh*

다른 Bourne과 유사한 쉘을 사용하면 다음을 수행할 수 있습니다.

searchPATH() (
  pattern=$1
  IFS=:; set -f; set -- $PATH
  set +f; IFS=
  for i do
    for j in "$i"/$pattern; do
      [ -x "$j" ] && printf '%s\n' "$j"
    done
  done
)

그런 다음:

$ searchPATH '*latex'
/usr/bin/arlatex
/usr/bin/dvilualatex
/usr/bin/fig4latex
/usr/bin/latex
/usr/bin/lualatex
/usr/bin/pdflatex
/usr/bin/pod2latex
/usr/bin/pslatex

이는 가장 일반적인 값에서 더 잘 작동합니다 $PATH. (eg) 로 끝나면 $PATH현재 디렉토리의 항목이 생략됩니다.:/bin:/usr/bin:

답변2

그리고불다, 사용compgen그리고type 내장 기능, 명령 이름에 줄 바꿈이 없다고 가정합니다.

IFS=$'\n'; set -f; type -p -- $(compgen -c | grep 'latex$')

관련 정보