「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:

おすすめ記事