
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:
0
Lorsque toutes les commandes spécifiées sont trouvées et exécutables.1
Si une ou plusieurs commandes sont manquantes ou non exécutables.2
Si 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 grep
Il 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 touch
Cette 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 cat
Cette 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ù type
ou 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.