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


11

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

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

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

Ответы:


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

1
Или даже лучше project=$HOME/project...
Петер

@peterph, или даже проще ~/project.
Стефан Шазелас

4
С zsh, вы также можете сделать, setopt cdablevarsа затемcd project
Стефан Chazelas

@StephaneChazelas: Я думаю, что это хороший момент - хотя, поскольку это zshвозможно, вы могли бы добавить это как отдельный ответ?
Jmetz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.