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.