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 percd
Si 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