Come definire un collegamento simbolico che posso usare in ogni directory


11

È possibile impostare un collegamento simbolico in modo che io possa utilizzare projectper puntare la directory home/me/project, ad esempio? Questo dovrebbe essere indipendente dalla posizione nel file system.

Mi piacerebbe usare comandi come cd project, nano project/file1.texe così via.

Devo scrivere un link simbolico a tutte le mie directory?

Risposte:


15

La maggior parte delle shell ha una CDPATHvariabile che cdpuò cercare le directory in cui cambiare, nello stesso modo in cui vengono cercati gli eseguibili $PATH.

Quindi, se aggiungi i tuoi link simbolici in una ~/projectsdirectory e lo fai CDPATH=~/projects, sarai in grado di fare cd fooper entrare~/projects/foo

Con zsh, se $varcontiene un percorso che si può fare cd ~varper cda quel percorso. La parte utile di ciò è quando il tuo prompt ha %~che poi lo riflette nel tuo prompt:

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

Con setopt cdablevars, puoi anche fare cd proj1invece di cd ~proj1.


9

Probabilmente vuoi usare variabili invece di collegamenti simbolici, ad es

export project=/home/me/project

poi

cd $project

o

vim $project/file

AGGIORNARE

Come sottolineato da peterph, puoi anche combinarli (comprese le variabili predefinite), ad es

export project=$HOME/project

1
O ancora meglio project=$HOME/project...
peterph

@peterph, o anche più semplice ~/project.
Stéphane Chazelas,

4
Con zsh, puoi anche fare setopt cdablevarse poicd project
Stéphane Chazelas il

@StephaneChazelas: Penso che sia un buon punto - anche se è specifico zshforse potresti aggiungerlo come risposta separata?
jmetz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.