Mengapa ketika saya menggunakannya locate mentortidak mencantumkan semua mentor tetapi ketika saya menggunakannya which mentormengatakan "tidak ada mentor di ..." - apa artinya ini?
di bash, lebih memilih: type -all acommand. Dan Jika saya membaca XYProblem di belakang pertanyaan Anda: Anda memiliki perintah, Anda dapat melihatnya melalui loc, tetapi tidak dapat menjalankannya? kemudian edit PATH, baik dalam ~/.profilefile pengguna spesifik Anda , atau jika Anda yakin Anda tahu apa yang harus dilakukan, dalam /etc/profilefile global [PERINGATAN: Anda dapat memecahkan skrip sistem (dan mungkin banyak OS) jika Anda menambahkan jalur yang salah di $ PATH dari / etc / profile ... (mis: path yang berisi perintah biasanya ditemukan di tempat lain). Lebih suka menambahkan pada akhir variabel. Dan tolong jangan menaruh ::atau . di mana pun di PATH itu.
locate menggunakan database yang dibangun sebelumnya untuk mencari file.
locatemembaca satu atau lebih database yang disiapkan oleh updatedb(8) dan menulis nama file yang cocok dengan setidaknya satu POLA dengan output standar, satu per baris.
updatedbmembuat atau memperbarui database yang digunakan oleh locate(1). Jika database sudah ada, datanya digunakan kembali untuk menghindari membaca ulang direktori yang tidak berubah.
updatedbbiasanya dijalankan setiap hari oleh cron(8) untuk memperbarui database default ( /var/lib/mlocate/mlocate.db)
whichmencari file yang dapat dieksekusi dengan mencarinya di direktori dalam PATHvariabel lingkungan.
whichmembutuhkan satu atau lebih argumen. Untuk setiap argumennya, ia mencetak ke stdoutjalur penuh dari executable yang akan dieksekusi ketika argumen ini telah dimasukkan pada prompt shell. Itu melakukan ini dengan mencari skrip yang dapat dieksekusi atau di direktori yang tercantum dalam variabel lingkungan PATH.
"updatedb" - senang mengetahui bahwa bukan hanya Microsoft yang memberikan nama yang tidak terlalu spesifik untuk banyak hal. (Di Win32, DeleteObjectmenghapus objek GDI, CloseHandlemenutup pegangan kernel, dll. Demikian pula updatedbmemperbarui locateDB)
user253751
"Yang" juga secara khusus berguna jika Anda mungkin memiliki beberapa versi dari program yang sama menendang di berbagai tempat di jalur Anda, jadi itu memberitahu Anda mana yang sebenarnya dieksekusi ketika Anda menjalankan perintah. Ini telah membantu saya sebelum mendiagnosis perilaku yang tidak diharapkan - misalnya, itu membantu saya menyadari bahwa saya telah meninggalkan versi utilitas yang diinstal secara manual pada sistem saya sehingga menggantikan versi yang diinstal oleh manajer paket.
Carcer
11
whichadalah untuk menemukan perintah ( whichmengembalikan nama jalur file / tautan yang akan dieksekusi di lingkungan saat ini)
locateadalah untuk menemukan file dengan nama ( locatemembaca satu atau lebih basis data yang disiapkan oleh updatedbdan menulis nama file yang cocok dengan setidaknya satu dari pola untuk output yang dikerjakan, satu per baris)
Berikan atribusi untuk sumber Anda - uraian dalam jawaban Anda diambil langsung dari halaman manual untuk utilitas tersebut.
Pasang kembali Monica iamnotmaynard
5
locatemengambil pola glob secara default (pola Regex dapat digunakan juga) dan mencari database /var/lib/mlocate/mlocate.dbuntuk nama file yang cocok dengan pola tersebut.
whichadalah perintah untuk mencari path lengkap dari suatu perintah dalam direktori yang ditafsirkan oleh PATHvariabel lingkungan.
where
danwhereis
.type -all acommand
. Dan Jika saya membaca XYProblem di belakang pertanyaan Anda: Anda memiliki perintah, Anda dapat melihatnya melalui loc, tetapi tidak dapat menjalankannya? kemudian edit PATH, baik dalam~/.profile
file pengguna spesifik Anda , atau jika Anda yakin Anda tahu apa yang harus dilakukan, dalam/etc/profile
file global [PERINGATAN: Anda dapat memecahkan skrip sistem (dan mungkin banyak OS) jika Anda menambahkan jalur yang salah di $ PATH dari / etc / profile ... (mis: path yang berisi perintah biasanya ditemukan di tempat lain). Lebih suka menambahkan pada akhir variabel. Dan tolong jangan menaruh::
atau.
di mana pun di PATH itu.Jawaban:
Apa perbedaan antara
locate
danwhich
?locate
menggunakan database yang dibangun sebelumnya untuk mencari file.Sumber cari (1) - Halaman manual Linux
Source updatedb (8) - Halaman manual Linux
which
mencari file yang dapat dieksekusi dengan mencarinya di direktori dalamPATH
variabel lingkungan.menggunakan algoritma yang sama seperti
bash
(1).Sumber yang (1) - Halaman manual Linux
locate mentor
daftar mentor, tetapiwhich mentor
mengatakan "tidak ada mentor di ..."Anda memiliki beberapa file bernama
mentor
yang dapat ditemukan dilocate
database.Anda tidak memiliki nama file atau skrip yang dapat dieksekusi
mentor
diPATH
.sumber
DeleteObject
menghapus objek GDI,CloseHandle
menutup pegangan kernel, dll. Demikian pulaupdatedb
memperbaruilocate
DB)which
adalah untuk menemukan perintah (which
mengembalikan nama jalur file / tautan yang akan dieksekusi di lingkungan saat ini)locate
adalah untuk menemukan file dengan nama (locate
membaca satu atau lebih basis data yang disiapkan olehupdatedb
dan menulis nama file yang cocok dengan setidaknya satu dari pola untuk output yang dikerjakan, satu per baris)sumber
locate
mengambil pola glob secara default (pola Regex dapat digunakan juga) dan mencari database/var/lib/mlocate/mlocate.db
untuk nama file yang cocok dengan pola tersebut.which
adalah perintah untuk mencari path lengkap dari suatu perintah dalam direktori yang ditafsirkan olehPATH
variabel lingkungan.sumber