Use a substituição de string em bash
:
$ a="~/dev/com/wp-content/plugins/myplugin"
$ echo ${a/dev/staging}
~/staging/com/wp-content/plugins/myplugin
Então, uma função como:
cdx ()
{
cd "${PWD/$1/$2}"
}
Em seguida, use cdx dev staging
para alternar de uma pasta em dev
para staging
. Com algumas verificações, você poderia nomear a função cd
:
cd ()
{
if [ $# != 2 ]
then
builtin cd "$@"
else
builtin cd "${PWD/$1/$2}"
fi
}
Efeito:
~ # cd /tmp
/tmp # cd tmp srv
/srv # cd
~ # cd -
/srv
/srv # cd tmp var
/srv #
Isso retém o comportamento usual de cd
em todos os casos, com exceção de dois argumentos.