Forse è meglio usare i link
Collegamento software
Collegamento simbolico o soft (file o directory, più flessibile e autodocumentante)
# Source Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx
Collegamento fisico
Hard link (solo file, meno flessibile e non autodocumentante)
# Source Link
ln /home/jake/doc/test/2000/something /home/jake/xxx
Come creare un collegamento a una directory
Suggerimento :Se non hai bisogno di vedere il link nella tua casa puoi iniziarlo con un punto .; quindi sarà nascosto per impostazione predefinita, quindi potrai accedervi come
cd ~/.myHiddelLongDirLink
C'è un'opzione di shell cdable_vars :
cdable_vars
Se questo è impostato, un argomento percdSi presume che builtincommand che non è una directory sia il nome di una variabile il cui valore è la directory in cui passare.
Puoi aggiungere questo al tuo .bashrc :
shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main
Nota che ho sostituito la tilde con $HOME; le virgolette impediscono l'espansione della tilde e Bash si lamenterebbe che non esiste una directory ~/Files/Scripts/Main .
Ora puoi usarlo come segue:
cd myFold
Nessun $ necessario. Questo è il punto, in realtà, come mostrato in altre risposte, cd "$myFold" funziona senza l'opzione shell. cd myFold funziona anche se il percorso è in myFold contiene spazi, non sono richieste virgolette.
Questo di solito funziona anche con il completamento automatico delle schede come _cd funzione in bash_completion controlla se cdable_vars è impostato, ma non tutte le implementazioni lo fanno allo stesso modo, quindi potresti dover generare bash_completion di nuovo nel tuo .bashrc (o modifica /etc/profile per impostare l'opzione della shell).
Altre shell hanno opzioni simili, ad esempio Zsh (cdablevars ).
Dal momento che è una variabile d'ambiente (alias ha una definizione diversa in bash ), devi valutarlo con qualcosa come:
cd "${myFold}"
oppure:
cp "${myFold}/someFile" /somewhere/else
Ma in realtà trovo più facile, se vuoi solo la facilità di passare a quella directory, creare un reale alias (in uno dei bash file di avvio come .bashrc ), quindi posso salvare i tasti premuti:
alias myfold='cd ~/Files/Scripts/Main'
Quindi puoi semplicemente usare (senza cd ):
myfold
Per eliminare la definizione, usa unalias . La seguente trascrizione mostra tutto di questi in azione:
pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy
pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy
pax> cd ; pwd
/home/pax
pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy
pax> unalias footy ; footy
bash: footy: command not found