コマンドラインからアプリケーションのパスを見つける方法は?


回答:


123

パスにある場合は、type gitまたはのいずれかを実行できますwhich gitwhichコマンドは、問題の正しいパス(環境とドットファイル間の混乱を)取得がありました。の場合type-p引数でパスのみを取得できます。

パスにない場合は、locate -b git 「git」という名前のすべてのものを見つけるためにそれを探すのが最善です。それは長いリストになるので、で修飾するのが良いかもしれませんlocate -b git | fgrep -w bin


10
私はlocate無限に使用しています(非常に高速です)が、それを知らない人にとってlocateは、Ubuntuで毎日自動的に実行される最新のデータベース更新と同じくらい最新です。リフレッシュコマンドがあるsudo updatedb...またlocate、このようなコマンドが動作するので、組み込まれている正規表現機能:locate -br "^git$"... -b`手段がちょうど検索を制限ベース名 ...またはなしで-b、それは完全なパス名を検索します。..また、 、検索するように設定したパスのみを検索します。正規表現フィルタ以外のコマンドライン制御はありません。
Peter.O

7
優先typewhichwhich簡単に混乱します。
ジル

@Gilles、それは私にとって面白いです、動作はまったく逆です:typeエイリアスなどを教えてくれるシェルビルトインでありwhich、実行可能ファイルへのパスを表示する外部プログラムです...その実行可能ファイルが呼び出されない方法。
quodlibetor

@quodlibetor問題whichは、シェルのビルトインと関数(コマンドを入力するとどうなるのか迷っている場合に関係します)を知らないことと$PATH、一部のシステムで異なる方法を使用することです。
ジル

48

POSIX標準これを行う方法ですcommand -v git。すべてのUNIXライクシステムがこれをサポートする必要があります。


4
これは1年以上前のものですが、これはまさに私が探していたものでした。これが受け入れられた答えではないことに驚いた。
あこいMeexx


13

ここでの他の答えは、あなたが使用することを起こるので、もし、大部分のLinuxの最近のバージョンに向けているように見えるgit必要はありませんOS上でlocatewhereiswhich、またはapropos古いスタンバイが常にある、(などのSolaris、HP-UX、など)find

find / -name git 

上記のシステムのいくつかの古いバージョンでは、に-printオプションを提供する必要がありますfind

find / -name git -print

また、を使用する場合はlocateupdatedb定期的に実行してください。(locate.updatedb一部のBSD派生物)


8
パス内のプログラムには、;を使用しtypeます。信頼性と移植性に優れています(30年前のシステムを除く)。
ジル

ありがとう、@ Gilles。私は知らなかったtype。:)それは間違いなくレパートリーに入っています!
ティムケネディ

findあなたがそれをルートするところから始めて、ファイルシステムの完全な深さ優先検索を行うことは、おそらく指摘する価値があります。だから、find / -name gitあなたのシステム全体を横断します。あなたのプログラムがあなたのパス上にあることを知っていれば通常できIFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; doneますが、UnixファイルシステムはあなたのPATH
quodlibetor

実際、私が以前に与えたコマンドはあなたを壊しますPATH、正しいことは(前と同じ注意事項で)ですIFS=":"; for dir in $PATH; do find "$dir" -name git; done。また、繰り返しに、この答えはのみへのアクセスを持っていない人々によって使用されるべきtypeか、which または locate、すなわち、ほとんど誰も。@Arcegeの答えは正しいです。
-quodlibetor

5

whereisまたはを使用して、インストール済みプログラムへのパスを取得しますwhich。名前がわからなくなった場合aproposは、ユーティリティの同義語または説明で使用できます(例:apropos "version control"find)git。それに続いて、もちろんwhatisプログラムの機能を簡単に要約するコマンドがあります。ただし、これはシステム上のすべてのプログラムと機能に適用されるわけではありません。たとえば、試してみてくださいwhatis "the meaning of life, universe and everything"


2
「42」で戻ってくると思いました!笑。
ジョー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.