GNU/Linux >> Tutoriels Linux >  >> Ubuntu

La différence entre localiser/où est/qui ?

Quelle est la différence fondamentale entre locate whereis et which commande.

La différence fondamentale que j'ai observée est que locate localise tous les noms de fichiers associés dans l'ensemble du système de fichiers, alors que whereis et which Les commandes ne donnent que l'emplacement (système/adresse locale du fichier) de l'application installée. Quelle est la précision de mon observation ?

Comment ces commandes sont-elles implémentées en interne. Pourquoi locate fonctionne si vite par rapport à la recherche par tiret, tandis que locate doit rechercher un nom de fichier particulier correspondant à la chaîne cible dans toute la hiérarchie du système de fichiers ?

Réponse acceptée :

which trouve l'exécutable binaire du programme (s'il est dans votre PATH). man which explique plus clairement :

qui renvoie les noms de chemin des fichiers (ou liens) qui seraient
exécutés dans l'environnement courant, si ses arguments avaient été donnés sous forme de commandes dans un shell strictement conforme à POSIX. Pour ce faire, il recherche dans PATH les fichiers exécutables correspondant aux noms des arguments. Il ne suit pas les liens symboliques.

whereis trouve le binaire, la source et les fichiers de page de manuel d'un programme. Par exemple

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

Vous pouvez obtenir des détails supplémentaires en transmettant la sortie de ces commandes en tant qu'arguments à ls -l ou 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 trouve en effet tous les fichiers qui ont le modèle spécifié n'importe où dans leurs chemins. Vous pouvez lui dire de ne trouver que les fichiers et répertoires dont les noms (plutôt que des chemins complets) inclure le modèle avec le -b option, qui correspond généralement à ce que vous voulez, et donne une liste moins compliquée.

locate est rapide car il utilise une base de données binaire qui est périodiquement mise à jour (une fois par jour, par cron ). Vous pouvez le mettre à jour vous-même pour vous assurer que les fichiers récemment ajoutés sont trouvés en exécutant sudo updatedb

Encore une chose à propos de locate - il ne se soucie pas de savoir si les fichiers existent toujours ou non, donc pour éviter de trouver des fichiers récemment supprimés, utilisez -e . Souvent, je passe aussi à less car la liste peut être longue. En général, je fais :

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

Le fonctionnement du tableau de bord d'Unity est expliqué ici - il utilise Zeitgeist pour indexer les fichiers système et apprendre des modèles d'utilisation, et permet à d'autres applications d'utiliser ces données, il fait donc beaucoup plus de travail que locate .


Ubuntu
  1. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  2. La Différence Entre Nss Et Pam?

  3. Quelle est la différence entre Ddrescue, Gddrescue et Dd_rescue ?

  4. La Différence Entre Update-grub Et Update-grub2 ?

  5. La différence entre `man` et `man (#)` ?

La différence entre sudo et su expliquée

La différence entre la sauvegarde et la réplication

Quelle est la différence entre Rsync et BTRFS sous Linux ?

Quelle est la différence entre le chat et la commande tactile

Différence entre les pilotes supplémentaires (nvidia) ?

Quelle est la différence entre "localiser" et "trouver" sous Linux ?