Bagaimana menemukan jalur aplikasi dari baris perintah?

109

Sebagai contoh, saya telah gitmenginstal di sistem saya. Tapi saya tidak ingat di mana saya menginstalnya, jadi perintah mana yang cocok untuk mencari tahu?

Anders Lind
sumber
45
Heh, heh " whichperintah" memang :)
Tikhon Jelvis

Jawaban:

123

Jika ada di jalur Anda, maka Anda dapat menjalankan salah satu type gitatau which git. The whichperintah memiliki masalah mendapatkan jalur yang tepat (kebingungan antara lingkungan dan dot file). Sebab type, Anda bisa mendapatkan jalan dengan -pargumen.

Jika tidak ada di jalur Anda, maka yang terbaik adalah mencarinya dengan itu. locate -b git Ia akan menemukan apa pun yang bernama 'git'. Ini akan menjadi daftar panjang, jadi mungkin baik untuk memenuhi syarat locate -b git | fgrep -w bin.

Arcege
sumber
10
Saya menggunakan locatetanpa henti (sangat cepat), tetapi bagi mereka yang tidak menyadarinya, locatehanya sebagai pembaruan terbaru dari basis data, yang secara otomatis dijalankan setiap hari di Ubuntu saya. The Refresh perintah sudo updatedb... Juga locatememiliki built-in kemampuan regex, sehingga perintah seperti ini bekerja: locate -br "^git$"... berarti -b` membatasi pencarian untuk hanya basename ... atau tanpa -b, ia mencari nama path penuh .. Juga , itu hanya mencari jalur yang telah Anda konfigurasikan untuk mencari .. tidak ada kontrol baris perintah ini selain filter regex Anda.
Peter.O
7
Lebih memilih typeuntuk which. whichmudah bingung .
Gilles
@Gilles, itu lucu bagi saya perilakunya persis sebaliknya: typeadalah shell builtin yang memberi tahu saya alias dan semacamnya, dan whichmerupakan program eksternal yang menunjukkan saya jalan ke executable ... walaupun jika ada builtin yang masuk ke dalam cara yang dapat dieksekusi tidak akan dipanggil.
quodlibetor
@quodlibetor Masalahnya whichadalah bahwa ia tidak tahu tentang built-in shell dan fungsi (yang relevan ketika Anda bertanya-tanya apa yang mengetik perintah akan lakukan), dan menggunakan yang berbeda $PATHpada beberapa sistem.
Gilles
48

Cara standar POSIX untuk melakukan ini adalah command -v git. Semua sistem mirip UNIX harus mendukung ini.

Richard Hansen
sumber
4
Saya tahu ini sudah lebih dari satu tahun, tetapi ini persis apa yang saya cari; Terkejut ini bukan jawaban yang diterima.
Akoi Meexx
13

whereis git dan Anda mendapatkan path ke perintah.

itu hanya jika git ada dalam variabel PATH Anda, jika Anda telah menginstalnya bukan melalui manajer paket Anda, itu lebih kompleks dan Anda harus menggunakan perintah findatau locate.

Hanan N.
sumber
1
Penggunaan whichjuga dianjurkan.
Nikhil Mulley
5
@ Nikhil type, lebih tepatnya, tidak which. Lihat Bagaimana cara menggunakan whichperintah alias?
Gilles
13

Jawaban lain di sini tampaknya sebagian besar diarahkan versi modern dari Linux, jadi jika Anda kebetulan menggunakan gitpada OS yang tidak memiliki locate, whereis, which, atau apropos(seperti Solaris, HPUX, dll), maka selalu ada siaga tua find.

find / -name git 

Salah satu versi lama dari sistem yang tercantum di atas, Anda mungkin perlu -printopsi yang disediakan untuk find.

find / -name git -print

Dan jika Anda menggunakannya locate, pastikan Anda menjalankannya updatedbsecara berkala. ( locate.updatedbpada beberapa turunan BSD)

Tim Kennedy
sumber
8
Untuk program di jalur, gunakantype ; itu dapat diandalkan dan portabel (kecuali untuk sistem lama 30 tahun).
Gilles
Terima kasih, @Gilles. Saya tidak pernah tahu type. :) Itu pasti masuk dalam daftar lagu!
Tim Kennedy
Mungkin layak untuk ditunjukkan yang findmelakukan pencarian mendalam-pertama pada sistem file mulai dari mana pun Anda root. Jadi find / -name gitakan melintasi seluruh sistem Anda. Jika Anda tahu bahwa programnya ada di jalur Anda biasanya dapat Anda lakukan IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, meskipun filesystem Unix cukup permisif sehingga ini dapat memecah dalam berbagai cara jika memiliki karakter aneh di Anda PATH.
quodlibetor
Sebenarnya perintah yang saya berikan sebelumnya akan merusak Anda PATH, hal yang benar (dengan peringatan yang sama seperti sebelumnya) adalah IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Juga, untuk mengulangi, jawaban ini hanya boleh digunakan oleh orang-orang yang tidak memiliki akses ke typeatau which atau locate , yaitu, hampir tidak ada. @ Jawaban Arcege benar.
quodlibetor
5

Untuk mendapatkan jalur ke program yang diinstal, Anda dapat menggunakan whereisatau which. Jika Anda lupa namanya, Anda dapat menggunakan apropossinonim atau deskripsi utilitas Anda, misalnya apropos "version control"akan menemukan git. Mengikuti itu tentu saja whatisperintah untuk meringkas fungsi program secara singkat. Namun ini tidak berlaku untuk semua program dan fungsi di sistem Anda. Coba misalnya whatis "the meaning of life, universe and everything".


sumber
2
Saya pikir itu akan kembali dengan "42"! LOL.
Joe