!["which"에 대한 인수로 glob 패턴을 사용합니다.](https://linux55.com/image/37465/%22which%22%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%9D%B8%EC%88%98%EB%A1%9C%20glob%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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과 같은 쉘에서 사용되는 임의의 결과를 제공할 수 있음 ):tcsh
zsh
type
$ 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$')