ZSH:
Jeśli korzystasz z zsh
alias -g ,,=".."
tego, czego potrzebujesz, ale spowoduje to rozszerzenie „,,” wszędzie, nie tylko w połączeniu z cd
.
Od man zshbuiltins
:
Jeśli -g
flaga jest obecna, zdefiniuj alias globalny; aliasy globalne są rozwijane, nawet jeśli nie występują w pozycji polecenia.
GRZMOTNĄĆ:
Jeśli jest to ograniczone bash
(ponieważ pytanie jest oznaczone tagiem bash ), przeczytaj następujące informacje:
Jest to rozwiązanie czysto aliasowe, zgodnie z żądaniem, jednak będzie to więcej niż wymagało, prawdopodobnie frustrujące użytkownika (zobacz ostrzeżenie na końcu mojego postu).
Cytat man bash
:
Jeśli ostatni znak wartości aliasu jest pusty, to następne słowo polecenia następujące po aliasie jest również sprawdzane pod kątem rozszerzenia aliasu.
Dlatego wystarczy alias cd
z dodatkową spacją (aby umożliwić rozwinięcie następnego argumentu), a następnie alias ,,
do ..
. Zobaczyć, że
alias cd='cd '
alias ,,='..'
daje dokładnie to, czego potrzebujesz.
Zauważ, że jest to poprawne nie tylko dla bash
(i jego alias
implementacji), ale dla wszystkich powłok kompilujących POSIX. Cytując przykład z man 1p alias
(podręcznik nie opisuje tej funkcji wyraźnie, tylko na przykładzie):
Ustaw nohup tak, aby mógł sobie poradzić z argumentem, który sam jest nazwą aliasu:
alias nohup="nohup "
Ostrzeżenie:
Jak pisze @PeterCordes w swoim komentarzu, spowoduje to automatyczne rozszerzenie innych aliasów po zapisaniu cd
. Może zaistnieć potrzeba napisania, cd \grep
jeśli chcesz zmienić katalog na inny, grep
ale twój grep
jest aliasem dla grep --color=auto
. Bez odwrotnego ukośnika cd
zgłosi błąd „zbyt wiele argumentów” (nie można cd
dwóch katalogów naraz) !.
$ ,,
by narzekać, takie jak:bash: ..: Is a directory
. (Innymi słowy, nie jest to plik wykonywalny.)