Gli alias non hanno lo scopo di farlo, ma puoi creare una funzione chiamata cd
questo è un involucro per il vero cd
. Questo funziona per me! Basta inserirlo nel tuo .bash_profile
o il file del tuo profilo preferito.
cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }
Oppure, con commenti e una bella formattazione:
cd ()
{
if [ "$1" = ",," ]; then # if first argument is ",,"...
builtin cd .. # call the builtin cd with ".." instead...
else
builtin cd "[email protected]" # else call builtin cd with original arguments
fi
}
MODIFICA
Grazie @derobert per aver sottolineato che if then else
qui è migliore di && ||
. Inoltre, ho appena realizzato (*facepalm *) che questa implementazione funzionerà solo se qualsiasi argomento non di percorso (ad es. -L -P
) non sono il primo argomento. Quindi fai attenzione, se hai la cattiva abitudine di digitare cd -L ,,
questo non ti aiuterà. E questo non è banale da gestire correttamente, credo.
ZSH:
Se stai usando zsh
alias -g ,,=".."
è ciò di cui hai bisogno, ma questo farà sì che "," venga espanso ovunque, non solo se usato con cd
.
Da man zshbuiltins
:
Se
-g
flag è presente, definire un alias globale; gli alias globali vengono espansi anche se non si trovano nella posizione di comando.
BASH:
Se limitato a bash
(poiché la domanda è contrassegnata con bash), leggi quanto segue:
Questa è una soluzione di puro alias, come richiesto, comunque questo farà più del necessario, probabilmente frustrando l'utente (vedi l'avviso alla fine del mio post).
Citando man bash
:
Se l'ultimo carattere del valore dell'alias è uno spazio vuoto, viene controllata anche la successiva parola di comando che segue l'alias per l'espansione dell'alias.
Pertanto è sufficiente alias cd
con uno spazio extra (per consentire l'espansione del suo argomento successivo) e poi alias ,,
a ..
. Vedi quello
alias cd='cd '
alias ,,='..'
fornisce esattamente ciò di cui hai bisogno.
Nota che questo è corretto non solo per bash
(e il suo alias
implementazione), ma tutte le shell conformi a POSIX. Citando un esempio da man 1p alias
(il manuale non descrive esplicitamente questa caratteristica, solo attraverso un esempio):
Imposta nohup in modo che possa gestire un argomento che è esso stesso un nome alias:
alias nohup="nohup "
Avviso: Come scrive @PeterCordes nel suo commento, causerà automaticamente other alias da espandere quando scritti dopo cd
. Potrebbe essere necessario scrivere cd \grep
se vuoi cambiare la directory in una chiamata grep
ma il tuo grep
è un alias per grep --color=auto
. Senza la barra rovesciata, cd
riporterà l'errore "troppi argomenti" (non puoi cd
a due directory contemporaneamente)!.
Gli alias devono essere la prima parola di un comando. Inoltre, l'alias deve essere sostituito da una parola quindi niente spazi).
Manuale di riferimento di Bash:alias
Gli alias consentono di sostituire una parola con una stringa quando viene utilizzato come prima parola di un semplice comando.
Potresti alias entrambi ..
e ,,
essere cd ..
.
$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/