Alias do Ubuntu renomeiam o problema do diretório

0

Eu tenho o Ubuntu 14.04 Trusty Tahr instalado no meu sistema.

Eu criei o seguinte alias no meu arquivo '~ / .bashrc' para renomear os diretórios recursivamente na pasta atual, pois é fácil usar o comando curto.

renamedirs() {
    find . -depth -type d -not -name '.' -exec rename 's/$1/$2/' {} +
}
alias rendirs=renamedirs

Eu já fiz source ~/.bashrc coisa.

Mas quando eu executo esse apelido abaixo,

rendirs Olddir Newdir

Recebo o seguinte erro:

Use of uninitialized value $1 in regexp compilation at (eval 33) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 33) line 1.
Use of uninitialized value $1 in regexp compilation at (eval 34) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 34) line 1.
...
...

Alguém pode me dizer o que há de errado aqui?

    
por Vicky Dev 24.06.2016 / 13:02

1 resposta

1

O Bash faz a diferença entre aspas simples '...' e aspas duplas "..." .

As aspas simples fazem com que o texto em anexo seja tomado literalmente, enquanto as aspas duplas permitem várias interpretações da string, como expansão de variável.

Você deve usar aspas duplas se tiver $x - como variáveis Bash na sua string que deseja expandir.

Além disso, nomeie diretamente sua função rendirs e não use um alias para adicionar um segundo nome se o primeiro não for usado.

rendirs() {
    find . -depth -type d -not -name '.' -exec rename "s/$1/$2/" {} +
}
    
por Byte Commander 24.06.2016 / 13:13