GNU/Linux >> Tutoriels Linux >  >> Linux

Trucs/astuces de navigation en ligne de commande Linux 3 - la variable d'environnement CDPATH

Dans la première partie de cette série, nous avons discuté du cd - commande en détail, et dans la deuxième partie, nous avons examiné en profondeur le pushd et popd commandes ainsi que les scénarios dans lesquels elles sont utiles.

Poursuivant notre discussion sur les aspects de navigation en ligne de commande, dans ce didacticiel, nous aborderons le CDPATH variable d'environnement à travers des exemples faciles à comprendre. Nous discuterons également de certains détails avancés liés à cette variable.

Mais avant de continuer, il convient de mentionner que tous les exemples de ce didacticiel ont été testés sur Ubuntu 14.04 avec Bash version 4.3.11(1).

La variable d'environnement CDPATH

Même si votre travail en ligne de commande implique d'effectuer toutes les opérations dans un répertoire particulier - par exemple votre répertoire personnel - vous devez également fournir des chemins absolus lors du changement de répertoire. Par exemple, considérez une situation où je suis dans /home/himanshu/Downloads répertoire :

$ pwd
/home/himanshu/Downloads

Et l'exigence est de passer à /home/himanshu/Desktop annuaire. Pour ce faire, je dois généralement exécuter :

cd /home/himanshu/Desktop/

ou 

cd ~/Desktop/

ou

cd ../Desktop/

Ne serait-ce pas facile si je pouvais simplement exécuter la commande suivante :

cd Desktop

Oui, c'est possible. Et c'est là qu'intervient la variable d'environnement CDPATH. Vous pouvez utiliser cette variable pour définir le répertoire de base pour le cd commande.

Si vous essayez d'imprimer sa valeur, vous verrez que cette variable env est vide par défaut :

$ echo $CDPATH
$

Maintenant, considérant le cas dont nous avons discuté jusqu'à présent, utilisons cette variable d'environnement pour définir /home/himanshu comme répertoire de base pour la commande cd.

Pour ce faire, le moyen le plus simple consiste à :

export CDPATH=/home/himanshu

Et maintenant, je peux faire ce que je n'étais pas capable de faire auparavant - depuis /home/himanshu/Downloads répertoire, exécutez le cd Desktop commande réussie.

$ pwd
/home/himanshu/Downloads
$ cd Desktop/
/home/himanshu/Desktop
$

Cela signifie que je peux maintenant faire un cd dans n'importe quel répertoire sous /home/himanshu sans spécifier explicitement /home/himanshu ou ~ ou ../ (ou plusieurs ../ ) dans la commande cd.

Points à garder à l'esprit

Vous savez maintenant comment nous avons utilisé la variable d'environnement CDPATH pour basculer facilement vers/depuis /home/himanshu/Downloads de/vers /home/himanshu/Desktop . Considérons maintenant une situation dans laquelle le /home/himanshu/Desktop répertoire contient un sous-répertoire nommé Téléchargements , et c'est vers ce dernier que vous avez l'intention de basculer.

Mais soudain, vous vous rendez compte que faire un cd Desktop vous amènera à /home/himanshu/Desktop . Donc, pour vous assurer que cela ne se produise pas, procédez comme suit :

cd ./Téléchargements

Bien qu'il n'y ait aucun problème dans la commande susmentionnée en soi, c'est un effort supplémentaire de votre part (aussi minime soit-il), d'autant plus que vous devrez le faire chaque fois qu'une telle situation se présentera. Une solution plus élégante à ce problème peut être de définir à l'origine la variable CDPATH de la manière suivante :

exporter CDPATH=".:/home/himanshu"

Cela signifie que vous dites à la commande cd de rechercher d'abord le répertoire dans le répertoire de travail actuel, puis d'essayer de rechercher le /home/himanshu annuaire. Bien sûr, que vous souhaitiez ou non que la commande cd se comporte de cette manière dépend entièrement de vos préférences ou de vos exigences - mon idée derrière la discussion de ce point était de vous faire savoir que ce genre de situation peut se produire.

Comme vous l'avez compris maintenant, une fois que la variable d'environnement CDPATH est définie, sa valeur - ou l'ensemble de chemins qu'elle contient - sont les seuls endroits sur le système où la commande cd recherche des répertoires (sauf bien sûr les scénarios où-in vous utilisez des chemins absolus). Il vous appartient donc entièrement de vous assurer que le comportement de la commande reste cohérent.

Ensuite, s'il existe un script bash qui utilise la commande cd avec des chemins relatifs, il est préférable d'effacer ou de désactiver d'abord la variable d'environnement CDPATH, à moins que vous ne soyez d'accord pour être piégé dans des problèmes imprévus. Alternativement, plutôt que d'utiliser l'exportation sur le terminal pour définir CDPATH, vous pouvez définir la variable d'environnement dans votre .bashrc après avoir testé les shells interactifs/non interactifs pour vous assurer que la modification que vous essayez d'apporter n'est reflétée que dans les shells interactifs.

L'ordre dans lequel les chemins apparaissent dans la valeur de la variable d'environnement est également important. Par exemple, si le répertoire actuel est répertorié avant /home/himanshu , la commande cd recherchera d'abord un répertoire dans le répertoire de travail actuel, puis passera à /home/himanshu . Cependant, si la valeur est "/home/himanshu:." alors la première recherche sera faite dans /home/himanshu et après cela le répertoire actuel. Inutile de dire que cela affectera ce que fait la commande cd et peut causer des problèmes si vous n'êtes pas conscient de l'ordre des chemins.

Gardez toujours à l'esprit que la variable d'environnement CDPATH, comme son nom l'indique, ne fonctionne que pour la commande cd. Cela signifie que lorsque vous êtes à l'intérieur de /home/himanshu/Downloads répertoire, vous pouvez exécuter le cd Desktop commande pour passer à /home/himanshu/Desktop répertoire, mais vous ne pouvez pas faire un ls . Voici un exemple :

$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: cannot access Desktop: No such file or directory
$

Cependant, il pourrait y avoir quelques solutions de contournement simples. Par exemple, nous pouvons réaliser ce que nous voulons avec un minimum d'effort de la manière suivante :

$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~

Mais oui, il n'y a peut-être pas de solution de contournement pour chaque situation.

Autre point important : comme vous l'avez peut-être observé, chaque fois que vous utilisez la commande cd avec la variable d'environnement CDPATH définie, la commande produit le chemin complet du répertoire vers lequel vous basculez dans la sortie. Inutile de dire que tout le monde ne voudrait pas avoir cette information chaque fois qu'il exécute la commande cd sur sa machine.

Pour vous assurer que cette sortie est supprimée, vous pouvez utiliser la commande suivante :

alias cd='>/dev/null cd'

La commande susmentionnée coupera la sortie chaque fois que la commande cd réussit, mais permettra aux messages d'erreur d'être générés chaque fois que la commande échoue.

Enfin, si vous rencontrez un problème après avoir défini la variable d'environnement CDPATH, vous ne pouvez pas utiliser la fonctionnalité de complétion de tabulation du shell, vous pouvez alors essayer d'installer et d'activer bash-completion - plus d'informations ici.

Conclusion

La variable d'environnement CDPATH est une épée à double tranchant :si elle n'est pas utilisée avec prudence et en toute connaissance de cause, elle peut vous faire tomber dans des pièges complexes qui peuvent nécessiter beaucoup de votre temps précieux pour être résolus. Bien sûr, cela ne signifie pas que vous ne devriez jamais essayer. évaluez simplement toutes les options disponibles et si vous concluez que l'utilisation de CDPATH serait d'une grande aide, alors allez-y et utilisez-le.

Avez-vous utilisé CDPATH comme un pro ? Avez-vous d'autres astuces à partager ? Veuillez partager vos réflexions dans les commentaires ci-dessous.


Linux
  1. Générer des mots de passe sur la ligne de commande Linux

  2. Utilisation de la force sur la ligne de commande Linux

  3. Avoir une vache à la ligne de commande Linux

  4. Enfermez-vous sur la ligne de commande Linux

  5. Trucs et astuces pour les variables d'environnement Linux

Conseils pour utiliser la commande top sous Linux

3 gestionnaires de mots de passe pour la ligne de commande Linux

5 trucs et astuces intéressants en ligne de commande sous Linux - Partie 1

Trucs et astuces de navigation en ligne de commande Linux - partie 1

Maîtrisez la ligne de commande Linux

19 trucs et astuces utiles pour la ligne de commande Linux