ZSH:
Wenn Sie verwenden, zsh alias -g ,,=".."ist es das, was Sie benötigen, aber dies wird dazu führen, dass ",," überall erweitert wird, nicht nur, wenn es mit verwendet wird cd.
Von man zshbuiltins:
Wenn das -g Flag vorhanden ist, definieren Sie einen globalen Alias. globale Aliase werden erweitert, auch wenn sie nicht in der Befehlsposition auftreten.
BASH:
Wenn Sie die Einschränkung auf bash(da die Frage mit bash gekennzeichnet ist ) haben, lesen Sie Folgendes:
Dies ist, wie gewünscht, eine reine Alias-Lösung, die jedoch mehr als erforderlich ist und möglicherweise den Benutzer frustriert (siehe die Warnung am Ende meines Beitrags).
Zitat man bash:
Wenn das letzte Zeichen des Alias-Werts leer ist, wird auch das nächste Befehlswort nach dem Alias auf Alias-Erweiterung überprüft.
Daher reicht es aus, einen Alias cdmit einem zusätzlichen Leerzeichen zu versehen (um das nächste Argument zu erweitern) und dann einen Alias ,,mit ... Siehst du das
alias cd='cd '
alias ,,='..'
gibt genau das was du brauchst.
Beachten Sie, dass dies nicht nur für bash(und dessen aliasImplementierung), sondern für alle POSIX-kompilierten Shells gilt. Zitieren eines Beispiels aus man 1p alias(das Handbuch beschreibt diese Funktion nicht explizit, sondern nur anhand eines Beispiels):
Richten Sie nohup so ein, dass es mit einem Argument umgehen kann, das selbst ein Aliasname ist:
alias nohup="nohup "
Warnung:
Während @PeterCordes in seinen Kommentar schreibt, werden andere Aliase automatisch erweitert, wenn sie nachher geschrieben werden cd. Möglicherweise müssen Sie schreiben, cd \grepwenn Sie das Verzeichnis in ein benanntes Verzeichnis ändern möchten, das grepjedoch grepein Alias für ist grep --color=auto. Ohne den umgekehrten Schrägstrich cdwird der Fehler "zu viele Argumente" gemeldet (Sie können nicht cdzwei Verzeichnisse gleichzeitig aufrufen).
$ ,,würden sich beschweren, wie zum Beispiel:bash: ..: Is a directory. (Mit anderen Worten, es ist keine ausführbare Datei.)