Un guide complet sur l’utilisation de la commande which sous Linux

Un guide complet sur l’utilisation de la commande which sous Linux

Linux offre aux utilisateurs un contrôle inégalé sur leur environnement informatique, des options de personnalisation étendues aux capacités détaillées de gestion du système. Parmi la multitude d’outils disponibles, cette whichcommande s’impose comme un outil essentiel pour harmoniser vos expériences en ligne de commande. Cet utilitaire vous permet de localiser précisément n’importe quel fichier exécutable en parcourant les répertoires spécifiés dans votre $PATHvariable. Dans ce guide complet, nous allons explorer le fonctionnement de cette whichcommande, clarifier sa syntaxe et ses options, et fournir des exemples pratiques pour améliorer votre maîtrise de la ligne de commande.

Comprendre la syntaxe et la fonctionnalité de la commande which

Cette whichcommande est l’outil idéal pour localiser le fichier exécutable associé à une commande donnée. Elle examine les répertoires définis dans votre variable d’environnement PATH. Elle révèle le fichier exécuté lors de l’exécution d’une commande et fournit une sortie associée en fonction des résultats de la recherche :

  • 0indique que toutes les commandes spécifiées ont été trouvées et sont exécutables.
  • 1signifie qu’une ou plusieurs commandes sont manquantes ou non exécutables.
  • 2indique qu’une option non valide a été utilisée.

La syntaxe standard pour appeler la whichcommande sous Linux est simple :

which [file1] [file2]...

Remplacez simplement [file1]et [file2]par les noms des exécutables que vous souhaitez localiser.

Pourquoi utiliser quelle commande ?

Cette whichcommande remplit plusieurs fonctions essentielles sous Linux. Elle permet aux utilisateurs de confirmer si une commande correspond à un exécutable réel, à un alias ou à un lien symbolique. De plus, elle localise précisément un fichier exécutable et aide à identifier les commandes manquantes ou conflictuelles dans la variable PATH. Son utilisation whichgarantit l’exécution correcte de la version souhaitée d’une commande lorsque plusieurs versions existent sur votre système. Cette commande peut considérablement améliorer votre productivité, notamment lors de l’utilisation de différents outils et scripts.

Applications pratiques de la commande which

Explorons maintenant une série d’exemples pratiques pour illustrer comment la whichcommande peut être appliquée dans des scénarios réels :

Exemple 1 : Localiser le chemin d’un exécutable

Identifier où réside l’exécutable d’une commande est simple avec la whichcommande :

which grep

Localiser le chemin de l'exécutable

Vous recevrez une sortie telle que «/usr/bin/grep » qui indique clairement l’emplacement exact du fichier exécutable.

Exemple 2 : Recherche des chemins de plusieurs commandes

Il est possible d’interroger plusieurs commandes simultanément avec la whichcommande :

which awk sed cat touch

Cette commande récupère les chemins des commandes awk, sed, et cat:

Trouver le chemin de plusieurs commandes

Exemple 3 : Afficher toutes les instances d’une commande

Par défaut, whichseule la première occurrence trouvée dans le chemin d’accès est renvoyée. Vous pouvez utiliser cette -aoption pour découvrir toutes les instances d’une commande particulière :

which -a cat

Cela fournira une liste de tous les emplacements où catse trouve :

Afficher toutes les instances

Pour vérifier les détails de ces fichiers, vous pouvez utiliser la lscommande avec l’ -lhoption permettant d’identifier s’il s’agit d’exécutables réels ou de doublons :

ls -lh /usr/bin/cat && ls -lh /bin/cat

Vérifier les exécutables

La sortie révèle les deux commandes identiques situées dans des répertoires différents, illustrant les deux comme des fichiers exécutables de 35 Ko.

Exemple 4 : Confirmation de l’existence d’une commande

Vérifiez si une commande spécifique existe à l’aide de la whichcommande :

which cats

Commandes manquantes

Si la commande n’est pas présente, aucune sortie n’apparaîtra et l’état de sortie devient différent de zéro, indiquant une commande manquante.

Exemple 5 : Identification des liens symboliques

Si votre système possède plusieurs versions d’un même programme, certaines instances peuvent être des liens symboliques plutôt que des binaires. Pour identifier les liens symboliques, exécutez la whichcommande avec l’ -aoption :

which -a crontab

Vérifier les liens symboliques

Ensuite, vérifiez les détails du fichier avec la lscommande :

ls -lh /usr/bin/crontab && ls -lh /bin/crontab

Inspecter les détails du fichier

Dans la sortie, si vous voyez ->, cela indique que le fichier est un lien symbolique pointant vers un autre emplacement.

Exemple 6 : Exclusion des commandes intégrées du shell

Notamment, la whichcommande omet les commandes intégrées au shell et n’affiche que les exécutables externes, ce qui facilite l’identification de l’emplacement d’installation d’un programme. Par exemple, while lsrenvoie un chemin, read, étant une commande intégrée, ne :

which ls read

Exclure les commandes intégrées du shell

Limitations de la commande which

Cette whichcommande présente certaines limitations qui peuvent nuire à son efficacité dans certains contextes. Elle se concentre principalement sur les exécutables externes et n’identifie pas les commandes intégrées, telles que cdou read. De plus, elle ne peut pas faire la distinction entre les fichiers binaires et les liens symboliques. Comme elle recherche uniquement dans les répertoires spécifiés dans la $PATHvariable, elle ne localise pas les programmes stockés dans d’autres emplacements. De plus, elle ne peut pas fournir d’informations telles que le type de fichier, les autorisations ou la version. En particulier, si une commande est absente, elle ne renvoie aucun résultat au lieu d’un message d’erreur.

Pour contourner ces limitations, pensez à utiliser des commandes alternatives telles que whereis, type, ou ls.

Où vs. Quelle commande

Les commandes whereet whichsont toutes deux destinées à localiser des fichiers, mais leurs objectifs sont distincts. Cette wherecommande est généralement utilisée sous Windows et certains systèmes de type Unix ; elle localise les fichiers et les répertoires, en listant toutes les correspondances dans le chemin d’accès du système.

À l’inverse, la whichcommande est exclusive aux systèmes de type Unix et se concentre uniquement sur les fichiers exécutables contenus dans les répertoires définis par la $PATHvariable. Par défaut, elle ne renvoie que la première correspondance trouvée ; cependant, cette -aoption permet de lister toutes les correspondances.

Pour illustrer la différence : l’exécution where nodesous Windows révèle tous les emplacements où se trouve l’exécutable du nœud, tandis que sous Linux, l’exécution which gccrenvoie le premier répertoire dans lequel se trouve le compilateur GCC.

Bien qu’elle offre de nombreuses fonctionnalités, cette whichcommande peut manquer de fonctionnalités. Néanmoins, les utilisateurs peuvent contourner ses contraintes en utilisant des commandes supplémentaires. Il est également important de noter que cette whichcommande ne détecte que les fichiers exécutables de votre système$PATH ; si votre script ou programme n’est pas identifié, il se peut qu’il ne dispose pas des autorisations d’exécution. Il est donc crucial de s’assurer que votre script se trouve dans un répertoire répertorié $PATHavec les autorisations d’exécution appropriées.

Questions fréquemment posées

1. Quel est le but principal de la commande which ?

L’objectif principal de la whichcommande est de localiser le fichier exécutable associé à une commande donnée en recherchant dans les répertoires désignés dans votre $PATHvariable d’environnement.

2. Comment trouver plusieurs exécutables à la fois à l’aide de la commande which ?

Vous pouvez spécifier plusieurs commandes dans une seule whichinstruction en les séparant par des espaces, comme ceci : which command1 command2, ce qui vous permet de récupérer les chemins de tous les exécutables spécifiés à la fois.

3. De quelles limitations dois-je être conscient lorsque j’utilise la commande which ?

Cette whichcommande présente plusieurs limitations, notamment l’impossibilité de trouver les commandes shell intégrées, l’absence de distinction entre les fichiers binaires et les liens symboliques, et la recherche uniquement dans les répertoires spécifiés dans la $PATHvariable. Si aucun exécutable n’est trouvé, aucun message d’erreur n’est renvoyé, ce qui peut être trompeur.

Source et images

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *