ZSH:
Si vous utilisez zsh
, alias -g ,,=".."
est ce dont vous avez besoin, mais cela va provoquer l'expansion de ",," partout, et pas seulement lorsqu'il est utilisé avec cd
.
D'après man zshbuiltins
:
Si le drapeau -g
est présent, définissez un alias global; les alias globaux sont toujours étendus même s'ils ne se trouvent pas en position de commande.
BASH:
Si vous êtes limité à bash
(comme la question est taggée avec bash), lisez ce qui suit :
Ceci est une solution purement par alias, comme demandé, cependant cela fera plus que nécessaire, ce qui pourrait frustrer l'utilisateur (voir l'avertissement à la fin de mon post).
En citant man bash
:
Si le dernier caractère de la valeur de l'alias est un espace, alors le mot de commande suivant l'alias est également vérifié pour l'expansion de l'alias.
Il suffit donc de créer un alias pour cd
avec un espace supplémentaire (pour permettre l'expansion de son argument suivant) et ensuite d'aliaser ,,
vers ..
. Voici ce que cela donne :
alias cd='cd '
alias ,,='..'
Cela donne exactement ce dont vous avez besoin.
Veuillez noter que ceci est correct non seulement pour bash
(et son implémentation des alias
), mais pour tous les shells conformes à POSIX. En citant un exemple de man 1p alias
(le manuel ne décrit pas explicitement cette fonctionnalité, seulement à travers un exemple) :
-
Configurez nohup pour qu'il puisse gérer un argument qui est lui-même un nom d'alias :
alias nohup="nohup "
Avertissement : Comme @PeterCordes l'écrit dans son commentaire, cela provoquera automatiquement l'expansion d'autres alias lorsqu'ils sont écrits après cd
. Cela peut vous obliger à écrire cd \grep
si vous voulez changer de répertoire vers un nommé grep
, mais que votre grep
est un alias pour grep --color=auto
. Sans le backslash, cd
renverra une erreur "trop d'arguments" (vous ne pouvez pas faire cd
vers deux répertoires en même temps) !.