Sebagai contoh, saya telah git
menginstal di sistem saya. Tapi saya tidak ingat di mana saya menginstalnya, jadi perintah mana yang cocok untuk mencari tahu?
Sebagai contoh, saya telah git
menginstal di sistem saya. Tapi saya tidak ingat di mana saya menginstalnya, jadi perintah mana yang cocok untuk mencari tahu?
Jawaban:
Jika ada di jalur Anda, maka Anda dapat menjalankan salah satu type git
atau which git
. The which
perintah memiliki masalah mendapatkan jalur yang tepat (kebingungan antara lingkungan dan dot file). Sebab type
, Anda bisa mendapatkan jalan dengan -p
argumen.
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
.
locate
tanpa henti (sangat cepat), tetapi bagi mereka yang tidak menyadarinya, locate
hanya sebagai pembaruan terbaru dari basis data, yang secara otomatis dijalankan setiap hari di Ubuntu saya. The Refresh perintah sudo updatedb
... Juga locate
memiliki 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.
type
adalah shell builtin yang memberi tahu saya alias dan semacamnya, dan which
merupakan program eksternal yang menunjukkan saya jalan ke executable ... walaupun jika ada builtin yang masuk ke dalam cara yang dapat dieksekusi tidak akan dipanggil.
which
adalah 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 $PATH
pada beberapa sistem.
Cara standar POSIX untuk melakukan ini adalah command -v git
. Semua sistem mirip UNIX harus mendukung ini.
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 find
atau locate
.
which
juga dianjurkan.
Jawaban lain di sini tampaknya sebagian besar diarahkan versi modern dari Linux, jadi jika Anda kebetulan menggunakan git
pada 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 -print
opsi yang disediakan untuk find
.
find / -name git -print
Dan jika Anda menggunakannya locate
, pastikan Anda menjalankannya updatedb
secara berkala. ( locate.updatedb
pada beberapa turunan BSD)
type
; itu dapat diandalkan dan portabel (kecuali untuk sistem lama 30 tahun).
type
. :) Itu pasti masuk dalam daftar lagu!
find
melakukan pencarian mendalam-pertama pada sistem file mulai dari mana pun Anda root. Jadi find / -name git
akan 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
.
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 type
atau which
atau locate
, yaitu, hampir tidak ada. @ Jawaban Arcege benar.
Untuk mendapatkan jalur ke program yang diinstal, Anda dapat menggunakan whereis
atau which
. Jika Anda lupa namanya, Anda dapat menggunakan apropos
sinonim atau deskripsi utilitas Anda, misalnya apropos "version control"
akan menemukan git
. Mengikuti itu tentu saja whatis
perintah 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"
.
which
perintah" memang :)