In Bash kann ich cd ~
mit jedem Befehl mit in mein Home-Verzeichnis gehen und tatsächlich auf mein Home-Verzeichnis verweisen ~
.
Kann ich neue, benutzerdefinierte "Verzeichnis-Aliase" (?) Erstellen, um auf andere Verzeichnisse zu verweisen? Hypothetisches Beispiel:
make_alias "~~" /mnt/photon/work/foo_project/
cp ~/home.png ~~/set_8/home_4.png
Wie kann es gemacht werden, wenn ja? Wenn nicht, ist es beabsichtigt und warum?
Schön zu haben: Wo und wie ~
wird dieses "~" gesetzt und gebunden?
n=/mnt/photon/work/foo_project
und danncp foo ~n/bar
. (Hinweis für das OP: Auch auf zsh beschränkt).@
oder_
), was in Bash nicht möglich ist, während dies~~
sicherlich der Fall ist (hackig, aber möglich). Außerdem wird nicht beantwortet, wie diese Neuzuordnung durchgeführt wird.Antworten:
Die Tilde ist kein Alias, sondern Teil der Shell-Erweiterung von bash (genau wie
*.txt
oder$((1 + 2))
).Die Bash-Tilde-Erweiterung unterstützt die folgenden Tilde-Präfixe:
dirs
verwendet den Verzeichnisstapel. Sie könnenpushd
ein Verzeichnis hinzufügen.Um Ihre spezielle Frage zu beantworten
~~
, ist es möglich , ein Verzeichnis zuzuordnen. Erstellen Sie einfach einen Benutzer namens~
und legen Sie ihn/mnt/photon/work/foo_project/
als Ausgangsverzeichnis fest:Ein viel "vernünftigerer" Ansatz besteht natürlich darin, nur eine Shell-Variable zu definieren, die
~/.bashrc
mit dem Befehl auf Ihr Verzeichnis in Ihrem Verzeichnis verweistauf die
$foo
wie gewohnt zugegriffen werden kann.quelle