GNU/Linux >> Belajar Linux >  >> Ubuntu

Perbedaan antara Cari/di mana/yang mana?

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 .


Ubuntu
  1. Apakah Perbedaan Antara Sudo Dan Gksu Sama Dengan Perbedaan Antara Sudo -i Dan Sudo -s?

  2. Perbedaan Antara `pria` dan `pria (#)`?

  3. Perbedaan Antara Lubuntu Dan Lxde?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara perintah locate dan find di Linux?

  3. Apa perbedaan antara unlink dan rm?

  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Sudo Su – Dan Sudo Su —?

  3. Centos – Perbedaan Shutdown 18:00 dan Shutdown 18:00?