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