Как определить символическую ссылку, которую я могу использовать в каждом каталоге

11

Можно ли установить символическую ссылку, чтобы я мог projectуказывать каталог home/me/project, например? Это должно быть независимо от расположения в файловой системе.

Я хотел бы использовать такие команды , как cd project, nano project/file1.texи так далее.

Должен ли я написать символическую ссылку на все мои каталоги?

LaTeXist
источник

Ответы:

15

В большинстве оболочек есть CDPATHпеременная, которая cdможет искать каталоги для изменения так же, как и в исполняемых файлах $PATH.

Так что, если вы добавите ваши символические ссылки в ~/projectsкаталог и сделаете CDPATH=~/projects, вы сможете сделать, cd fooчтобы войти в~/projects/foo

С zsh, если $varсодержит путь , который вы можете сделать , cd ~varчтобы cdк этому пути. Полезная часть этого - когда ваша подсказка имеет, %~которая затем отражает ее в вашей подсказке:

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

С setopt cdablevars, вы также можете сделать cd proj1вместо cd ~proj1.

Стефан Шазелас
источник
9

Вы, вероятно, хотите использовать переменные вместо символических ссылок, например

export project=/home/me/project

тогда

cd $project

или

vim $project/file

ОБНОВИТЬ

Как отметил Петерф, вы также можете комбинировать их (включая предопределенные переменные), например

export project=$HOME/project
jmetz
источник
1
Или даже лучше project=$HOME/project...
Петер
@peterph, или даже проще ~/project.
Стефан Шазелас
4
С zsh, вы также можете сделать, setopt cdablevarsа затемcd project
Стефан Chazelas
@StephaneChazelas: Я думаю, что это хороший момент - хотя, поскольку это zshвозможно, вы могли бы добавить это как отдельный ответ?
Jmetz