Uygulamanın yolunu komut satırından nasıl bulabilirim?


109

Örneğin, gitsistemime kurdum. Ama nereye monte ettiğimi hatırlamıyorum, bu yüzden bunu bulmak için hangi komut uygun?


45
Heh, heh " whichcommand" gerçekten :)
Tikhon Jelvis

Yanıtlar:


123

Yolunuzdaysa, ya type gitda çalıştırabilirsiniz which git. whichKomut sorunları doğru yol (çevre ve nokta dosyaları arasında karışıklık) elde etti. Çünkü type, -pargüman ile sadece yol alabilirsiniz .

Yolunuzda değilse, locate -b git 'git' adında bir şey bulacağı için aramanız en iyisidir . Uzun bir liste olacak, bu yüzden onu nitelendirmek için iyi olabilir locate -b git | fgrep -w bin.


10
locateSonsuza dek kullanırım (çok hızlı), ama farkında olmayanlar için locate, sadece otomatik olarak Ubuntu'mda günlük olarak çalışan en son veritabanı güncellemesi kadar güncel. Yenileme komutu sudo updatedbAyrıca ... locateböyle komutlar çalışır, böylece yerleşik regex yeteneği: locate -br "^git$"... -b` araçlar sadece aramayı kısıtlamak basename ... ya olmaksızın -b, tam yol adını arar .. Ayrıca , sadece arama yapmak için yapılandırdığınız yolları arar .. regex filtrelerinizden başka komut satırı kontrolü yoktur.
Peter.O

7
Tercih typeet which. whichkolayca karışır .
Gilles

@Gilles, bu benim için komik, davranış tam tersi: typebana takma adlar ve benzeri söyleyen bir kabuk yerleşimi ve çalıştırılabilir olanın whichyolunu gösteren harici bir program. bu çalıştırılabilir çağrılmayacak şekilde.
quodlibetor,

@quodlibetor Sorunları, whichkabuk yerleşiklerini ve işlevlerini (komutun ne yazacağını merak ettiğinizde alakalı) bilmediği ve $PATHbazı sistemlerde farklı bir yöntem kullandığıdır .
Gilles

48

POSIX standardı Bunu yapmanın yolu command -v git. UNIX benzeri tüm sistemler bunu desteklemelidir.


4
Bunun bir yaşından büyük olduğunu biliyorum, ama tam olarak aradığım şey buydu; Bu kabul edilen cevap değil şaşırttı.
Akoi Meexx


13

Burada diğer cevaplar büyük ölçüde Linux modern versiyonları yönelik gibi görünüyor, bu nedenle kullanmak olur gitbulunmayan bir OS üzerinde locate, whereis, which, veya apropos(Solaris, HPUX, vb gibi), sonra hep eski bekleme yoktur find.

find / -name git 

Yukarıda listelenen sistemlerin bazı eski sürümlerinde, size -printsağlanan bir seçeneğe ihtiyacınız olabilir find.

find / -name git -print

Ve kullanırsanız locate, updatedbdüzenli aralıklarla koştuğunuzdan emin olun . ( locate.updatedbbazı BSD türevlerinde)


8
Yoldaki programlar içintype ; güvenilir ve taşınabilir (30 yıllık sistemler hariç).
Gilles

Teşekkürler, @Gilles. Asla bilmiyordum type. :) Bu kesinlikle repertuarda gidiyor!
Tim Kennedy,

Muhtemelen findkök dizini yaptığınız yerden başlayarak tam bir ilk dosya sistemi araştırması yaptığını belirtmeye değer. Böylece find / -name gittüm sisteminizi geçecek. Programın yolunuzda olduğunu biliyorsanız, genellikle yapabileceğiniz bir şey IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; doneolsa da, Unix dosya sistemlerinde garip karakterler varsa, bunun çeşitli şekillerde parçalanmasına izin verilebilir PATH.
quodlibetor

Aslında daha önce verdiğim komut sizi kıracak PATH, doğru şey (öncekiyle aynı uyarılara sahip) IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Ayrıca, yinelemek için, bu cevap sadece hiç kimseye erişimi olmayan typeveya which veya locate hiç kimseye erişimi olmayan kişiler tarafından kullanılmalıdır . @ Arcege'nin cevabı doğru.
quodlibetor,

5

Yüklü Kullanmak ya programa yolunu almak için whereisya which. Adını unutursanız, aproposeş anlamlı veya yardımcı programınızın bir açıklaması ile kullanabilirsiniz , örneğin apropos "version control", bulacaktır git. Bundan sonra elbette whatisbir programın işlevini kısaca özetleme komutu veriliyor . Ancak bu, sisteminizdeki tüm programlar ve işlevler için geçerli değildir. Mesela dene whatis "the meaning of life, universe and everything".


2
"42" ile geri döneceğini sanıyordum! LOL.
Joe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.