Apa perbedaan mendasar antara locate
whereis
dan which
perintah.
Perbedaan mendasar yang saya amati adalah locate
menempatkan semua nama file terkait di seluruh sistem file, sedangkan whereis
dan which
perintah hanya memberikan lokasi (sistem/alamat lokal file) dari aplikasi yang diinstal. Seberapa akurat pengamatan saya?
Bagaimana perintah ini diimplementasikan secara internal. Mengapa locate
bekerja sangat cepat dibandingkan dengan pencarian dasbor, sementara locate
harus mencari nama file tertentu yang cocok dengan string target di seluruh hierarki sistem file?
Jawaban yang Diterima:
which
menemukan program biner yang dapat dieksekusi (jika ada di PATH Anda). man which
menjelaskan lebih jelas:
yang mengembalikan nama path file (atau tautan) yang akan
dieksekusi di lingkungan saat ini, jika argumennya diberikan sebagai perintah dalam shell yang benar-benar sesuai dengan POSIX. Ini dilakukan dengan mencari PATH untuk file yang dapat dieksekusi yang cocok dengan nama argumen. Itu tidak mengikuti tautan simbolis.
whereis
menemukan biner, sumber, dan file halaman manual untuk sebuah program. Misalnya
$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz
Anda bisa mendapatkan detail tambahan dengan meneruskan output dari perintah ini sebagai argumen ke ls -l
atau file
$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8
$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8
locate
memang menemukan semua file yang memiliki pola yang ditentukan di mana saja di jalurnya. Anda dapat memberitahunya untuk hanya menemukan file dan direktori yang namanya (bukan jalur lengkap) sertakan pola dengan -b
opsi, yang biasanya Anda inginkan, dan memberikan daftar yang tidak terlalu rumit.
locate
cepat karena menggunakan basis data biner yang diperbarui secara berkala (sekali sehari, oleh cron
). Anda dapat memperbaruinya sendiri untuk memastikan file yang baru ditambahkan ditemukan dengan menjalankan sudo updatedb
Satu hal lagi tentang locate
– tidak peduli apakah file masih ada atau tidak, jadi untuk menghindari menemukan file yang baru dihapus, gunakan -e
. Seringkali saya juga melakukan pipe ke less
karena daftarnya bisa panjang. Biasanya saya lakukan:
sudo updatedb && locate -b -e gimp | less
Cara kerja tanda hubung Unity dijelaskan di sini – ia menggunakan Zeitgeist untuk mengindeks file sistem dan belajar dari pola penggunaan, dan memungkinkan aplikasi lain menggunakan data ini, jadi ia melakukan lebih banyak pekerjaan daripada locate
.