← Sommaire SkyLinux

Leçon 86 — locate, which, whereis et type — Rechercher efficacement

Tu connais déjà find pour chercher des fichiers. Mais savais-tu qu'il existe des outils encore plus rapides pour localiser commandes et fichiers ? Dans cette leçon, nous allons explorer quatre utilitaires complémentaires : locate, which, whereis et type. Chacun a son用途 spécifique.

1. locate — Recherche ultra-rapide par base de données

locate ne cherche pas directement sur le disque. Il utilise une base de données pré-construite, ce qui le rend extrêmement rapide. La base est mise à jour périodiquement (généralement via un cron).

Installation et mise à jour

# Installer locate (si pas présent) sudo apt install mlocate # Debian/Ubuntu sudo yum install mlocate # CentOS/RHEL # Mettre à jour la base de données manuellement sudo updatedb

Utilisation basique

# Rechercher tous les fichiers contenant "apache2" locate apache2 # Rechercher les fichiers se terminant par ".conf" locate ".conf" # Rechercher dans un chemin spécifique locate -r "/etc/.*\.conf" # idem : locate "\.conf$"

Options utiles

OptionDescription
-iInsensible à la casse
-cCompter le nombre de correspondances
-l NLimiter la sortie à N résultats
-eVérifier que le fichier existe encore
# Recherche insensible à la casse locate -i readme # Compter les résultats locate -c ".log" # Limiter à 10 résultats locate -l 10 "\.sh" # Vérifier que les fichiers existent encore (plus lent mais fiable) locate -e nginx

2. which — Trouver la commande exécutée

which recherche l'emplacement d'une commande dans les répertoires du PATH. Idéal pour savoir quel exécutable sera utilisé.

# Trouver où se trouve python3 which python3 # Résultat : /usr/bin/python3 # Trouver tous les emplacements possibles (aliases, fonctions) which -a python3

Options principales

OptionDescription
-aLister toutes les occurrences dans le PATH
-pInclure les alias et fonctions (comportement par défaut)
# Vérifier plusieurs commandes à la fois which python3 git docker # Vérifier qu'une commande n'existe pas (code de retour 1) which nmap # echo $? → 1 si non trouvé

3. whereis — Trouver binaire, source et manuel

whereis va plus loin que which : il localise le binaire, le code source et la page man d'une commande.

# Trouver toutes les informations sur ls whereis ls # ls: /bin/ls /usr/share/man/man1/ls.1.gz # Seulement le binaire whereis -b ls # Seulement les pages man whereis -m grep

Options

OptionDescription
-bRechercher uniquement les binaires
-mRechercher uniquement les pages man
-sRechercher uniquement les sources
-uTrouver les fichiers avec des permissions inhabituelles

4. type — Identifier le type de commande

type est intégré au shell Bash. Il montre comment une commande sera interprétée : alias, fonction, builtin ou binaire externe.

# Identifier le type d'une commande type ls # ls est un alias de 'ls --color=auto' type cd # cd est une primitive du shell type python3 # python3 est /usr/bin/python3 type -a echo # echo est une primitive # echo est /bin/echo

Options utiles

OptionDescription
-tRetourne uniquement le type (alias, builtin, file, function)
-aToutes les occurrences dans le PATH
-pRetourne le chemin du binaire (ou rien si pas trouvé)
# Juste le type (pour les scripts) type -t ls # alias type -t cd # builtin type -t python3 # file # Vérifier si une commande est un alias if [ "$(type -t mcd)" = "function" ]; then echo "La fonction mcd existe" fi

Comparatif rapide

OutilUsage principalVitesse
locateFichiers (via base de données)⚡⚡⚡ Très rapide
whichCommandes dans le PATH⚡⚡ Rapide
whereisBinary + man + sources⚡⚡ Rapide
typeType de commande (shell)⚡⚡⚡ Instantané

Exercices pratiques

Exercice 1 — Découvrir ta base locate

# Mettre à jour la base et chercher sudo updatedb locate -c bash # Combien de fichiers contiennent "bash" ?

Exercice 2 — Trouver python

# Trouver python3 avec which, whereis et type which python3 whereis python3 type -t python3

Exercice 3 — Identifier tes alias

# Lister tous les alias actifs alias # Vérifier un alias spécifique type ll # Ou: which ll

Exercice 4 — Créer un script de diagnostic

#!/bin/bash # diagnostic.sh — Vérifie l'existence de commandes vitales commandes=("python3" "git" "docker" "ssh" "curl") for cmd in "${commandes[@]}"; do if which "$cmd" > /dev/null 2>&1; then echo "✓ $cmd trouvé : $(which $cmd)" else echo "✗ $cmd non trouvé" fi done

Points clés à retenir