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$')