Você pode usar a PWD variable e expansão de parâmetros é construída para aplicar rapidamente uma transformação de texto ao diretório atual.
cd ${PWD/parent1/parent2}
Isso não precisa ser exatamente um componente de caminho, pode ser qualquer substring. Por exemplo, se os caminhos forem literalmente parent1 e parent2 e não houver nenhum caractere 1 restante no caminho, você poderá usar cd ${PWD/1/2} . A cadeia de pesquisa pode conter vários componentes de caminho, mas você precisa escapar da barra. Por exemplo, para ir de ~/checkout/trunk/doc/frobnicator/widget a ~/checkout/bugfix/src/frobnicator/widget , você pode usar cd ${PWD/trunk\/doc/bugfix/src} . Mais precisamente, a parte parent1 é um padrão de caractere curinga, para que você possa escrever algo como cd ${PWD/tr*c/bugfix/src} .
Em zsh , você pode usar a sintaxe mais curta cd parent1 parent2 . Novamente, você pode substituir qualquer substring no caminho (aqui, isso é exatamente uma substring, não um padrão curinga).
Você pode implementar uma função semelhante no bash.
cd () {
local options
options=()
while [[ $1 = -[!-]* ]]; do options+=("$1"); shift; done
if (($# == 2)); then
builtin cd "${options[@]}" "${PWD/$1/$2}"
else
builtin cd "${options[@]}" "$@"
fi
}
Zsh fornece conclusão para o segundo argumento. Implementar isso na bash é deixado como um exercício para o leitor.