Da es sich um eine Umgebungsvariable handelt (Alias hat eine andere Definition in bash
), müssen Sie sie wie folgt auswerten:
cd "${myFold}"
oder:
cp "${myFold}/someFile" /somewhere/else
Aber ich finde es tatsächlich einfacher, wenn Sie nur einfach in dieses Verzeichnis wechseln möchten, einen echten Alias zu erstellen (in einer der bash
Startdateien wie .bashrc
), damit ich Tastenanschläge speichern kann:
alias myfold='cd ~/Files/Scripts/Main'
Dann können Sie einfach (ohne cd
) verwenden:
myfold
Um die Definition loszuwerden, verwenden Sie unalias
. Das folgende Transkript zeigt all dies 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
in one of the bash startup files like .bashrc
. Durch das Einfügen des Alias in eine geeignete Startdatei wird sichergestellt, dass er für alle Sitzungen verfügbar ist .Es gibt eine Shell-Option
cdable_vars
:Sie können dies zu Ihrem hinzufügen
.bashrc
:Beachten Sie, dass ich die Tilde durch ersetzt habe
$HOME
. Anführungszeichen verhindern eine Tilde-Erweiterung und Bash würde sich beschweren, dass es kein Verzeichnis gibt~/Files/Scripts/Main
.Jetzt können Sie dies wie folgt verwenden:
Nicht
$
erforderlich. Das ist eigentlich der springende Punkt - wie in anderen Antworten gezeigt,cd "$myFold"
funktioniert dies ohne die Shell-Option.cd myFold
funktioniert auch, wenn der Pfad inmyFold
Leerzeichen enthält, kein Anführungszeichen erforderlich.Dies funktioniert normalerweise sogar mit der automatischen Vervollständigung von Registerkarten, da die
_cd
Funktion inbash_completion
prüft, ob festgelegtcdable_vars
ist - aber nicht jede Implementierung tut dies auf die gleiche Weise, sodass Sie möglicherweise erneut eine Quellebash_completion
in Ihrem erstellen müssen.bashrc
(oder bearbeiten müssen/etc/profile
, um die Shell-Option festzulegen).Andere Shells haben ähnliche Optionen, zum Beispiel Zsh (
cdablevars
).quelle
setopt cdablevars
sieht vielleicht so aus, aber ich kenne zsh überhaupt nicht.cdable_vars
Vielleicht ist es besser, Links zu verwenden
Soft Link
Symbolischer oder weicher Link (Dateien oder Verzeichnisse, flexibler und selbstdokumentierender)
Harte Verbindung
Hardlink (nur Dateien, weniger flexibel und nicht selbstdokumentierend)
So erstellen Sie einen Link zu einem Verzeichnis
Hinweis : Wenn Sie den Link in Ihrem Haus 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
quelle
Sie können der Hashtabelle Ihrer Bash beliebige Pfade hinzufügen:
hash -d <CustomName>=<RealPath>
Jetzt können Sie
cd ~<CustomName>
. Um es dauerhaft zu machen, fügen Sie es Ihrem bashrc- Skript hinzu.Beachten Sie, dass diese Hashtabelle einen Cache für Bash bereitstellen soll, damit nicht jedes Mal, wenn ein Befehl ausgeführt wird, nach Inhalten gesucht werden muss. Daher wird diese Tabelle bei Ereignissen gelöscht, die den Cache ungültig machen, z
$PATH
. B. beim Ändern .quelle
zsh
aber nichtbash
.zsh
meiner Meinung nach die beste Antwort, aber es stimmt, dass es nur funktioniert , zumindest auf meinem Ubuntu-System.Zunächst müssen Sie die Anführungszeichen entfernen:
Die Anführungszeichen verhindern, dass die Shell die Tilde auf ihre besondere Bedeutung als Ihr
$HOME
Verzeichnis erweitert.Sie könnten dann in
$myFolder
einer Umgebungeine Shell-Variable verwenden:Um einen Alias zu erstellen , müssen Sie den Alias definieren:
Sie können diese Art von Befehl dann wie folgt behandeln:
quelle
export
es..bashrc
oder einer anderen Ressourcendatei, die Sie verwenden, und es wird in der unmittelbaren Shell definiert, jedoch nicht in Shell-Skripten.Zunächst müssen Sie auf den
$
Wert von "myFold" zugreifen, damit der Code in der Frage funktioniert:Um dies zu vereinfachen, erstellen Sie einen Alias in
~/.bashrc
:Vergessen Sie nicht, die
.bashrc
einmalige Quelle anzugeben, damit der Alias in der aktuellen Bash-Sitzung verfügbar wird:Jetzt können Sie mit folgendem Ordner wechseln:
quelle
Eine andere Möglichkeit wäre die Verwendung eines symbolischen Links. dh:
Danach können Sie Operationen ausführen
~/myFold
, z.Dadurch wird die Datei abgelegt
~/Files/Scripts/Main
. Sie können den symbolischen Link jederzeit mit entfernenrm ~/myFold
, wodurch das ursprüngliche Verzeichnis erhalten bleibt.quelle
cd myFold
dannpwd
, wird es zeigen, dass Sie in myFold sind. Dies ist ein Deal Breaker für mich, da relative Befehle mit p4-Quellcodeverwaltung vom aktuellen Verzeichnis abhängen.pwd -P
Es ist aber auch ein tatsächlicher Alias für ein Verzeichnis möglich
Auf diese Weise haben Sie eine gemeinsame Namenskonvention (für jedes Verzeichnis / Alias-Paar), und wenn Sie etwas aus dem aktuellen Verzeichnis in myScripts kopieren müssen, müssen Sie nicht darüber nachdenken.
IHTH
quelle
Die vorhergehenden Antworten, die ich versucht habe, erlauben keine automatische Erweiterung (Autocompletion) von Unterverzeichnissen des Alias-Verzeichnisses.
Wenn Sie jedoch das Verzeichnis, das Sie als Alias verwenden möchten, auf den
dirs
Stapel verschieben ...... können Sie dann eingeben
dirs -v
, um die numerische Position im Stapel anzuzeigen:und beziehen Sie sich mit dieser Nummer auf die meisten, wenn nicht alle Befehle, die einen Verzeichnisparameter erwarten:
Sie können sogar Tabdie unmittelbaren Unterverzeichnisse des "Alias" -Verzeichnisses anzeigen:
quelle
Fügen Sie die folgende Zeile in Ihr Myscript ein
Im Terminal verwenden
quelle