Com zsh
(observe que which
é criado apenas em tcsh
ou zsh
, em outros shells pode gerar resultados aleatórios, use type
em Bourne como shells):
$ 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
Ou (se você quiser considerar somente executáveis e não funções, aliases ...):
$ 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*
Com outros shells parecidos com Bourne, você poderia fazer:
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
)
E então:
$ 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
Isso deve trabalhar mais os valores mais comuns de $PATH
. Ele omitirá as entradas no diretório atual se $PATH
terminar em :
(como /bin:/usr/bin:
)