GNU/Linux >> Znalost Linux >  >> Ubuntu

Rozdíl mezi lokalizací/kde je/který?

Jaký je základní rozdíl mezi locate whereis a which příkaz.

Základní rozdíl, který jsem pozoroval, je ten locate vyhledá všechny související názvy souborů v celém souborovém systému, zatímco whereis a which příkazy uvádějí pouze umístění (systémová/místní adresa souboru) nainstalované aplikace. Jak přesné je mé pozorování?

Jak jsou tyto příkazy interně implementovány. Proč locate pracovat tak rychle ve srovnání s pomlčkovým vyhledáváním, zatímco locate musí hledat konkrétní název souboru odpovídající cílovému řetězci v celé hierarchii souborového systému?

Přijatá odpověď:

which najde binární spustitelný soubor programu (pokud je ve vaší PATH). man which vysvětluje jasněji:

který vrací cesty k souborům (nebo odkazům), které by byly
spuštěny v aktuálním prostředí, kdyby jeho argumenty byly zadány jako příkazy v shellu striktně v souladu s POSIX. Provádí to hledáním spustitelných souborů v PATH, které odpovídají názvům argumentů. Nenásleduje symbolické odkazy.

whereis najde binární soubory, zdrojové soubory a soubory manuálové stránky programu. Například

$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

Další podrobnosti můžete získat předáním výstupu těchto příkazů jako argumentů do ls -l nebo 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 skutečně najde všechny soubory, které mají kdekoli ve svých cestách zadaný vzor. Můžete mu říci, aby našel pouze soubory a adresáře, jejichž názvy (spíše než úplné cesty) zahrňte vzor pomocí -b možnost, což je obvykle to, co chcete, a poskytuje méně nepraktický seznam.

locate je rychlý, protože používá binární databázi, která se pravidelně aktualizuje (jednou denně, pomocí cron ). Můžete jej aktualizovat sami, abyste zajistili nalezení nedávno přidaných souborů spuštěním sudo updatedb

Ještě jedna věc o locate – nezáleží na tom, zda soubory stále existují nebo ne, takže abyste nenašli nedávno smazané soubory, použijte -e . Často také používám potrubí na less protože seznam může být dlouhý. Obvykle to dělám:

sudo updatedb && locate -b -e gimp | less

Zde je vysvětleno, jak Unity's dash funguje – používá Zeitgeist k indexování systémových souborů a učení se ze vzorců používání a umožňuje jiným aplikacím využívat tato data, takže dělá mnohem více práce než locate .


Ubuntu
  1. Je rozdíl mezi Sudo a Gksu stejný jako rozdíl mezi Sudo -i a Sudo -s?

  2. Rozdíl mezi `mužem` a `mužem (#)`?

  3. Rozdíl mezi Lubuntu a Lxde?

  1. Jaký je rozdíl mezi příkazem locate a find v Linuxu

  2. Jaký je rozdíl mezi „vyhledat“ a „najít“ v Linuxu?

  3. Jaký je rozdíl mezi ls a l?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Jaký je rozdíl mezi Sudo Su – a Sudo Su –?

  3. Rozdíl mezi Nss a Pam?