
Em nosso servidor, temos várias estruturas de pastas duplicadas para teste, preparação e produção. Além de pequenas alterações, a estrutura de pastas entre os três é geralmente a mesma.
Quando estou trabalhando em um plugin do WordPress, estou profundamente envolvido na estrutura da pasta de desenvolvimento (ex ~/dev/com/wp-content/plugins/myplugin
.). Eu sei que isso ~/staging/com/wp-content/plugins/myplugin
existe.
Se meu diretório de trabalho atual for ~/dev/com/wp-content/plugins/myplugin
, posso mudar facilmente para~/staging/com/wp-content/plugins/myplugin
semdigitando toda a estrutura de diretórios?
Eu gostaria de digitar algo comocdx
~/staging
, ou mesmocdx
../../../../../staging
e faça com que o comando tente percorrer o novo diretório usando meu caminho de diretório atual. Obviamente, se a nova pasta não contiver a estrutura adequada, ocorrerá um erro.
Estou preso digitando toda a estrutura de diretórios? Ou há um jeito melhor?
Responder1
Use 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}"
}
E então faça cdx dev staging
para mudar de uma pasta 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 #
Isto mantém o comportamento usual de cd
em todos os casos, exceto para dois argumentos.
Responder2
Adicione esta função ao seu .bash_profile
e digitando cdstaging
você poderá alternar entre qualquer diretório dentro ~/dev
do equivalente em ~/staging
.
Claro que você pode alterar o nome para o que quiser. Além disso, você pode criar uma função reversa apenas alterando o nome da função e "1s@dev@staging@"
exatamente o oposto.
cdstaging ()
{
OLDPATH=$(pwd | sed -e "1s@$HOME@~@")
NEWPATH=$(echo $OLDPATH | sed -e "1s@dev@staging@")
cd $NEWPATH
}
Responder3
Em ksh
ou zsh
:
cd dev staging