Vielleicht ist es besser, Links zu verwenden
Softlink
Symbolischer oder weicher Link (Dateien oder Verzeichnisse, flexibler und selbstdokumentierend)
# Source Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx
Fester Link
Fester Link (nur Dateien, weniger flexibel und nicht selbstdokumentierend)
# Source Link
ln /home/jake/doc/test/2000/something /home/jake/xxx
So erstellen Sie einen Link zu einem Verzeichnis
Hinweis :Wenn Sie den Link in Ihrem Zuhause nicht sehen müssen, können Sie ihn mit einem Punkt beginnen.; dann wird es standardmäßig ausgeblendet, dann können Sie wie folgt darauf zugreifen
cd ~/.myHiddelLongDirLink
Es gibt eine Shell-Option cdable_vars :
cdable_vars
Wenn dies gesetzt ist, ein Argument für cd Ein eingebauter Befehl, der kein Verzeichnis ist, wird als Name einer Variablen angenommen, deren Wert das Verzeichnis ist, in das gewechselt werden soll.
Sie könnten dies zu Ihrem .bashrc hinzufügen :
shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main
Beachten Sie, dass ich die Tilde durch $HOME ersetzt habe; Anführungszeichen verhindern die Tilde-Erweiterung und Bash würde sich beschweren, dass es kein Verzeichnis ~/Files/Scripts/Main gibt .
Jetzt können Sie dies wie folgt verwenden:
cd myFold
Kein $ erforderlich. Das ist eigentlich der springende Punkt – wie in anderen Antworten gezeigt, cd "$myFold" funktioniert ohne die Shell-Option. cd myFold funktioniert auch, wenn der Pfad myFold ist enthält Leerzeichen, keine Anführungszeichen erforderlich.
Dies funktioniert normalerweise sogar mit der automatischen Tab-Vervollständigung wie dem _cd Funktion in bash_completion prüft, ob cdable_vars ist gesetzt – aber nicht jede Implementierung macht es auf die gleiche Weise, also müssen Sie vielleicht bash_completion sourcen wieder in Ihrem .bashrc (oder bearbeiten Sie /etc/profile um die Shell-Option einzustellen).
Andere Shells haben ähnliche Optionen, zum Beispiel Zsh (cdablevars ).
Da es sich um eine Umgebungsvariable handelt (Alias hat eine andere Definition in bash ), müssen Sie es mit etwas wie:
cd "${myFold}"
oder:
cp "${myFold}/someFile" /somewhere/else
Aber ich finde es tatsächlich einfacher, wenn Sie einfach in dieses Verzeichnis wechseln möchten, eine echte zu erstellen Alias (in einem der bash Startdateien wie .bashrc ), damit ich Tastenanschläge sparen kann:
alias myfold='cd ~/Files/Scripts/Main'
Dann können Sie einfach (ohne den cd ):
myfold
Um die Definition loszuwerden, verwenden Sie unalias . Das folgende Transkript zeigt alle davon in Aktion:
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