Como definir um link simbólico que eu possa usar em todos os diretórios

11

É possível definir um link simbólico para que eu possa usar projectpara apontar o diretório home/me/project, por exemplo? Isso deve ser independente da localização no sistema de arquivos.

Eu gostaria de usar comandos como cd project, nano project/file1.texe assim por diante.

Preciso escrever um link simbólico para todos os meus diretórios?

LaTeXist
fonte

Respostas:

15

A maioria dos shells possui uma CDPATHvariável que cdpode procurar por diretórios alterados da mesma maneira que os executáveis ​​são pesquisados $PATH.

Portanto, se você adicionar seus links simbólicos em um ~/projectsdiretório e fizer isso CDPATH=~/projects, poderá fazer isso cd foopara acessar~/projects/foo

Com zsh, se $varcontém um caminho que você pode fazer cd ~varpara cdque esse caminho. A parte útil disso é quando o seu prompt possui o %~que então o reflete no seu prompt:

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

Com setopt cdablevars, você também pode fazer em cd proj1vez de cd ~proj1.

Stéphane Chazelas
fonte
9

Você provavelmente deseja usar variáveis ​​em vez de links simbólicos, por exemplo

export project=/home/me/project

então

cd $project

ou

vim $project/file

ATUALIZAR

Conforme indicado por peterph, você também pode combiná-los (incluindo variáveis ​​predefinidas), por exemplo

export project=$HOME/project
jmetz
fonte
1
Ou melhor ainda project=$HOME/project...
peterph
@peterph, ou ainda mais simples ~/project.
Stéphane Chazelas
4
Com zsh, você também pode fazer setopt cdablevarse depoiscd project
Stéphane Chazelas
@StephaneChazelas: Eu acho que esse é um bom argumento - embora, como é específico, zshtalvez você possa adicionar isso como uma resposta separada?
jmetz