Aliasy k tomu nejsou určeny, ale můžete vytvořit funkci nazvanou cd
to je obal pro skutečný cd
. Tenhle mi funguje! Stačí jej vložit do .bash_profile
nebo soubor vašeho profilu podle vašeho výběru.
cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }
Nebo s komentáři a pěkným formátováním:
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
}
UPRAVIT
Děkujeme @derobert za upozornění na if then else
je zde lepší než && ||
. Také jsem si právě uvědomil (*facepalm *), že tato implementace bude fungovat pouze v případě jakýchkoli argumentů mimo cestu (tj. -L -P
) nejsou prvním argumentem. Buďte tedy varováni, pokud máte špatný zvyk psát cd -L ,,
tohle ti nepomůže. A to není triviální správně zacházet, myslím.
ZSH:
Pokud používáte zsh
alias -g ,,=".."
je to, co potřebujete, ale to způsobí, že ",," se rozšíří všude, nejen při použití s cd
.
Od man zshbuiltins
:
Pokud
-g
příznak je přítomen, definujte globální alias; globální aliasy jsou rozšířeny, i když se nevyskytují na pozici příkazu.
BASH:
Pokud je omezeno na bash
(protože je otázka označena bash), přečtěte si následující:
Toto je čistě alias řešení, jak bylo požadováno, nicméně to udělá více, než je požadováno, možná frustruje uživatele (viz varování na konci mého příspěvku).
Citace man bash
:
Pokud je poslední znak hodnoty aliasu prázdný, pak se zkontroluje rozšíření aliasu i další příkazové slovo za aliasem.
Proto stačí alias cd
s mezerou navíc (aby bylo možné rozšířit jeho další argument) a poté alias ,,
na ..
. Viz to
alias cd='cd '
alias ,,='..'
poskytuje přesně to, co potřebujete.
Všimněte si, že to platí nejen pro bash
(a jeho alias
implementace), ale všechny shelly kompilující POSIX. Cituji příklad z man 1p alias
(manuál tuto funkci nepopisuje explicitně, pouze jako příklad):
Nastavte nohup tak, aby se mohl vypořádat s argumentem, který je sám o sobě názvem aliasu:
alias nohup="nohup "
Upozornění: Jak píše @PeterCordes ve svém komentáři, automaticky to způsobí jiné aliasy k rozšíření při zápisu po cd
. Může vyžadovat, abyste napsali cd \grep
pokud chcete změnit adresář na grep
ale vaše grep
je alias pro grep --color=auto
. Bez zpětného lomítka cd
ohlásí chybu „příliš mnoho argumentů“ (nemůžete cd
do dvou adresářů najednou)!.
Aliasy musí být první slovo příkazu. Také alias musí být nahrazen slovem proto žádné mezery).
Bash Reference Manual:Aliasy
Aliasy umožňují nahradit slovo řetězcem když je použito jako první slovo jednoduchého příkazu.
Můžete alias oba ..
a ,,
být cd ..
.
$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/