
Table des matières
Linux vous donne un contrôle complet sur la façon dont vous travaillez, de la personnalisation à la gestion du système. Un outil pratique qui peut rendre votre expérience plus fluide est le which commande. Il vous aide à trouver rapidement l'emplacement exact d'un fichier exécutable en recherchant dans les répertoires répertoriés dans votre $PATH variable. Dans ce guide, nous expliquerons comment fonctionne la commande, explorer sa syntaxe et ses options et passera par des exemples pratiques pour vous aider à l'utiliser efficacement.
Comprendre la syntaxe de commande et le travail
Le which La commande dans Linux aide à trouver le fichier exécutable pour une commande donnée. Il recherche des répertoires répertoriés dans la variable d'environnement de chemin. Cette commande affiche quel fichier s'exécute lorsque vous exécutez une commande. Il renvoie la sortie suivante:
0Lorsque toutes les commandes spécifiées sont trouvées et exécutables.1Si une ou plusieurs commandes sont manquantes ou non exécutables.2Si une option non valide est utilisée.
La syntaxe générale pour utiliser quelle commande dans Linux est:
which (file1) (file2) ...Remplacer (file1) et (file2) avec les noms des exécutables que vous souhaitez trouver.
Pourquoi devrions-nous utiliser quelle commande
Il existe de nombreuses raisons d'utiliser la commande qui dans Linux. Par exemple, cela nous aide à déterminer si une commande est un exécutable réel, un alias ou un lien symbolique. De plus, il affiche l'emplacement exact d'un fichier exécutable. Il nous permet également d'identifier les commandes manquantes ou conflictuelles dans la variable de chemin. De plus, l'utilisation de quelle commande garantit que la version correcte s'exécute lorsque plusieurs versions existent.
Comment utiliser quelle commande dans Linux
Explorons quelques exemples pour voir comment fonctionne quelle commande dans les cas d'utilisation réels:
Exemple 1: Localisez le chemin d'un exécutable
Nous pouvons utiliser la commande quelle commande pour déterminer où le fichier exécutable d'une commande est stocké:
which grepIl renvoie le chemin complet, tel que «/ usr / bin / grep», indiquant l'emplacement exact de l'exécutable.
Exemple 2: Trouver des chemins de plusieurs commandes
Nous pouvons spécifier plusieurs commandes simultanément avec la commande qui vérifier leurs chemins respectifs:
which awk sed cat touchCette commande récupère les chemins de awk, sed et cat Commandes, respectivement:

Exemple 3: afficher toutes les instances d'une commande
Par défaut, which Renvoie uniquement le premier match trouvé dans le chemin. Cependant, nous pouvons exécuter la commande qui avec le -a Option pour trouver toutes les occurrences d'une commande:
which -a catCette commande répertorie tous les emplacements où cat se trouve dans le chemin:

Vous pouvez vérifier leurs détails, en exécutant la commande LS avec le -lh option. Cela montre si les deux fichiers sont de vrais exécutables ou des doublons à différents emplacements:
ls -lh /usr/bin/cat && ls -lh /bin/cat
La capture d'écran ci-dessus affiche deux commandes identiques à différents emplacements, à la fois de 35 Ko et exécutable.
Exemple 4: Vérifiez si une commande existe
Nous pouvons utiliser la commande quelle commande pour vérifier l'existence d'une commande spécifique:
which cats
Si la commande n'existe pas, il n'y a pas de sortie, comme illustré dans la capture d'écran ci-dessus, et l'état de sortie est non nul.
Exemple 5: Identifier les liens symboliques
Un système peut avoir plusieurs versions du même programme, mais certaines instances peuvent être des liens symboliques au lieu de fichiers binaires réels. Pour trouver les liens symboliques, exécutez simplement la commande avec qui avec -a option:
which -a crontab
Ensuite, inspectez les détails du fichier avec le ls commande:
ls -lh /usr/bin/crontab && ls -lh /bin/crontab
Si la sortie comprend ->cela signifie que le fichier est un lien symbolique pointant vers un autre emplacement.
Exemple 6: Exclure les commandes intégrées Shell
Le which La commande affiche uniquement les exécutables externes et n'affiche pas les commandes intégrées de shell. Il nous aide à identifier où un programme est installé sur le système. Par exemple, dans la commande suivante qui ne renvoie qu'un chemin pour LS puisque la lecture est une commande shell intégrée:
which ls read
Quelles limites de commande
Le which La commande a plusieurs limitations qui le rendent moins fiable dans certaines situations. Par exemple, il affiche uniquement des exécutables externes et ne détecte pas les commandes intégrées comme cd ou read. De plus, il ne peut pas faire la différence entre les liens binaires et symboliques. La commande recherche strictement les répertoires répertoriés dans le $PATH variable, ce qui signifie qu'il ne peut pas trouver de programmes stockés ailleurs. De plus, il n'a pas fourni de détails tels que le type de fichier, les autorisations ou la version. De plus, si une commande n'existe pas, elle n'affiche pas de message d'erreur mais ne renvoie rien.
Pour surmonter ces limitations, vous pouvez opter pour une commande alternative comme où typeou ls.
Où vs. Quelle commande
Le where et which Les commandes aident à localiser les fichiers mais servent des objectifs différents. Le where La commande est principalement utilisée dans Windows et certains systèmes de type Unix. Il trouve à la fois des fichiers et des répertoires et répertorie toutes les correspondances du chemin du système.
Le which La commande est spécifique aux systèmes de type UNIX. Il recherche uniquement les fichiers exécutables dans les répertoires répertoriés dans le $PATH variable. Par défaut, il renvoie le premier match, mais en utilisant which -a répertorie toutes les correspondances.
Par exemple, courir where node La commande sur Windows affiche tous les emplacements où le nœud est trouvé. Sur Linux, which gcc Renvoie le premier chemin où se trouve le compilateur GCC.
Pendant que le which Command offre plusieurs fonctionnalités, il manque encore certaines capacités. Cependant, cela peut être surmonté en utilisant une commande alternative, comme discuté précédemment. De plus, le which La commande détecte uniquement les fichiers exécutables dans votre $PATH. Si votre script ou votre programme n'est pas trouvé, il peut manquer des autorisations d'exécution. Par conséquent, assurez-vous que votre script est dans un répertoire répertorié dans $PATH et a exécuté des autorisations.







