Comment définir un lien symbolique que je peux utiliser dans chaque répertoire

11

Est-il possible de définir un lien symbolique afin que je puisse utiliser projectpour pointer le répertoire home/me/project, par exemple? Cela doit être indépendant de l'emplacement dans le système de fichiers.

Je voudrais utiliser des commandes comme cd project, nano project/file1.texet ainsi de suite.

Dois-je écrire un lien symbolique vers tous mes répertoires?

LaTeXist
la source

Réponses:

15

La plupart des shells ont une CDPATHvariable qui cdpeut rechercher des répertoires vers lesquels changer comme pour les exécutables $PATH.

Donc, si vous ajoutez vos liens symboliques dans un ~/projectsrépertoire et que CDPATH=~/projectsvous le faites , vous pourrez le faire cd foopour aller dans~/projects/foo

Avec zsh, si $varcontient un chemin que vous pouvez faire cd ~varpour cdà ce chemin. La partie utile de cela est lorsque votre invite a %~qui la reflète ensuite dans votre invite:

$ proj1=/usr/local proj2=/etc/apache2
$ PS1='%~$ '
$ cd ~proj1
~proj1$ cd ~proj2/sites-enabled
~proj2/sites-enabled$

Avec setopt cdablevars, vous pouvez aussi faire à la cd proj1place de cd ~proj1.

Stéphane Chazelas
la source
9

Vous souhaitez probablement utiliser des variables au lieu de liens symboliques, par exemple

export project=/home/me/project

puis

cd $project

ou

vim $project/file

MISE À JOUR

Comme l'a souligné Peter, vous pouvez également combiner ces éléments (y compris des variables prédéfinies), par exemple

export project=$HOME/project
jmetz
la source
1
Ou encore mieux project=$HOME/project...
peterph
@peterph, ou encore plus simple ~/project.
Stéphane Chazelas
4
Avec zsh, vous pouvez aussi faire setopt cdablevarset ensuitecd project
Stéphane Chazelas
@StephaneChazelas: Je pense que c'est un bon point - mais comme c'est spécifique à zshpeut-être pourriez-vous ajouter cela comme une réponse distincte?
jmetz