Bul ve Linux'ta hangisi arasındaki fark


27

Linux'ta locateve whichLinux'taki fark nedir ?

Neden kullandığımda locate mentorbütün mentorları listeliyor, fakat kullandığımda which mentor"mentor yok ..." diyor - bu ne anlama geliyor?



Ayrıca whereve vardır whereis.
Jan Tojnar

bash, tercih: type -all acommand. Ve eğer sorunuzun arkasındaki XYProblemi okursam: bir komutunuz varsa, onu locate aracılığıyla görebilirsiniz, ancak uygulayamıyor musunuz? daha sonra PATH'yi ya belirli bir kullanıcının ~/.profiledosyasında düzenleyin ya da ne yapacağınızı bildiğinize ikna olmanız durumunda, genel /etc/profiledosyada [UYARI: yanlış yol eklerseniz sistem komut dosyalarını (ve muhtemelen işletim sisteminin büyük bölümünü) bozabilirsiniz. / etc / profile $ $ PATH (örneğin: genellikle başka yerlerde bulunan komutları içeren yollar). Yalnızca değişkenin END'sinde eklemeyi seçin. Ve lütfen o PATH içinde ::bir .yere koymayın .
Olivier Dulac,

Yanıtlar:


45

Arasındaki fark nedir locateve which?

locate dosyayı bulmak için önceden oluşturulmuş bir veritabanı kullanır.

locateupdatedb(8) tarafından hazırlanan bir veya daha fazla veritabanını okur ve PATTERN'lerden en az birini eşleşen, her satırda bir tane olmak üzere standart çıktıya uyan dosya adlarını yazar.

Kaynak bul (1) - Linux kılavuz sayfası

updatedblocate(1) tarafından kullanılan bir veritabanı yaratır veya günceller . Veritabanı zaten varsa, değiştirilmemiş dizinleri yeniden okumaktan kaçınmak için verileri yeniden kullanılır.

updatedbcronvarsayılan veritabanını güncellemek için genellikle (8) günlük olarak çalıştırılır ( /var/lib/mlocate/mlocate.db)

Source updatedb (8) - Linux kılavuz sayfası


whichPATHçevre değişkenindeki dizinlerde arayarak çalıştırılabilir bir dosya arar .

whichbir veya daha fazla argüman alır. stdoutBağımsız değişkenlerinin her biri için , bu bağımsız değişken kabuk istemine girildiğinde çalıştırılacak olan yürütülebilir dosyaların tam yoluna yazdırır . Bunu, ortam değişkeninde listelenen dizinlerde bir yürütülebilir dosyayı veya komut dosyasını arayarak yapar PATH.

bash(1) ile aynı algoritmayı kullanarak .

Kaynak olan (1) - Linux kılavuz sayfası


locate mentormentoru listeler, ancak which mentor“mentor yok ...” der

Bu ne anlama geliyor?

Veritabanında mentorbulunabilecek bazı dosyalarınız var locate.

Sen adında çalıştırılabilir bir dosya veya komut dosyası yok mentorGözlerinde farklı PATH.


2
"updatedb" - şeyler için aşırı derecede spesifik olmayan isimlerle gelen yalnızca Microsoft olmadığını bilmek güzel. (Win32'de DeleteObjectbir GDI nesnesini siler, CloseHandlebir çekirdek tutamacını vb. updatedblocate
Kapatır

"hangi", aynı programın yolunuzdaki çeşitli yerlerinde tekmeleyen birden fazla sürümünüz olması durumunda özellikle kullanışlıdır, bu yüzden komutu çalıştırdığınızda gerçekte hangisinin çalıştırıldığını gösterir. Beklenmeyen davranışların teşhisinde daha önce bu benim için yardımcı oldu - örneğin, sistemimde bir yardımcı programın el ile yüklü bir sürümünü bıraktığımı fark etmemi sağladı, böylece paket yöneticisi tarafından yüklenen sürümü geçersiz kılıyordu.
Carcer

11

whichbir komut bulmaktır ( whichgeçerli ortamda yürütülecek dosyaların / bağlantıların yol adını döndürür)

locatedosyaları isme göre bulmaktır ( locatetarafından hazırlanan bir veya daha fazla veri tabanını okur updatedbve satırlardan bir tanesine sıralı çıktıya göre en az bir kalıpla eşleşen dosya adlarını yazar)


2
Lütfen kaynaklarınıza atıfta bulunun - cevabınızdaki açıklamalar doğrudan bu sayfaların man sayfalarından alınmıştır.
Monica iamnotmaynard'ı

5

locatevarsayılan olarak bir glob deseni alır (Regex deseni de kullanılabilir) ve /var/lib/mlocate/mlocate.dbdeseni eşleşen herhangi bir dosya adını veritabanında arar .

whichPATHOrtam değişkeni tarafından yorumlanan dizinlerde bir komutun tam yolunu aramak için kullanılan bir komuttur .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.