Jak zdefiniować dowiązanie symboliczne, którego mogę używać w każdym katalogu

11

Czy można ustawić dowiązanie symboliczne, dzięki czemu będę mógł projectwskazać katalog home/me/project, np.? Powinno to być niezależne od lokalizacji w systemie plików.

Chciałbym użyć polecenia jak cd project, nano project/file1.texi tak dalej.

Czy muszę napisać symboliczny link do wszystkich moich katalogów?

LaTeXist
źródło

Odpowiedzi:

15

Większość powłok ma CDPATHzmienną, która cdmoże wyszukiwać katalogi do zmiany w taki sam sposób, w jaki wyszukiwane są pliki wykonywalne $PATH.

Więc jeśli dodasz swoje dowiązania symboliczne do ~/projectskatalogu i zrobisz to CDPATH=~/projects, będziesz mógł zrobić, cd fooaby wejść~/projects/foo

Dzięki zsh, jeśli $varzawiera ścieżkę można zrobić cd ~varna cdtej ścieżce. Przydatną częścią tego jest, gdy ma %~to pytanie, które następnie odzwierciedla to w twoim pytaniu:

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

Dzięki setopt cdablevarsmożesz również zrobić cd proj1zamiast cd ~proj1.

Stéphane Chazelas
źródło
9

Prawdopodobnie chcesz użyć zmiennych zamiast dowiązań symbolicznych, np

export project=/home/me/project

następnie

cd $project

lub

vim $project/file

AKTUALIZACJA

Jak wskazał Peterph, możesz także łączyć je (w tym predefiniowane zmienne), np

export project=$HOME/project
jmetz
źródło
1
Albo jeszcze lepiej project=$HOME/project...
Peter
@peterph, a nawet prościej ~/project.
Stéphane Chazelas
4
Z zsh, możesz również zrobić, setopt cdablevarsa następniecd project
Stéphane Chazelas
@StephaneChazelas: Myślę, że to dobra uwaga - chociaż jest to specyficzne dla zshbyć może możesz dodać to jako osobną odpowiedź?
jmetz