Possível duplicado:
reutilizar texto em um comando bash
Se quiser renomear um arquivo com alguns diretórios, como evitar a repetição do caminho?
Por exemplo:
mv path/to/old_filename.txt path/to/new_filename.txt
Gostaria de saber se existe uma maneira de fazer isso:
mv path/to/old_filename.txt (?)new_filename.txt
Onde (?)
haveria uma maneira de dizer "no mesmo diretório".
Você pode usar a expansão de chaves:
mv path/to/{old_filename.txt,new_filename.txt}
Aqui está um link para o guia GNU sobre expansão de chaves no shell bash, que define uma lista de substitutos e diz ao bash para repetir o parâmetro usando um substituto diferente cada vez que se repete.
Por exemplo,
será expandido para
A única ressalva é que as repetições expandidas devem poder se seguir como argumentos para o programa de destino.
fonte
mv path/to/{old,new}_filename.txt
. Isso também ajuda a reversão ou outros tipos de repetição quase imediata do comando. Eu já fiz muitas vezesmv /etc/X11/xorg.conf{,.backup}
, por exemplo , ser capaz de reverter o processo com a simples mudançamv /etc/X11/xorg.conf{.backup,}
.A resposta de Darth acima é inteligente, mas se você quiser usar uma abordagem
cd
, considere também usar um subshell:Como a mudança de diretório ocorre no subshell, na verdade você não mudará os diretórios no seu shell interativo.
fonte
old_filename.txt
.Outra alternativa útil, se você deseja executar vários comandos no diretório, é esta:
fonte
Eu gosto da resposta de @ Darth . Aqui está uma alternativa:
cd path/to && mv oldfile newfile && cd -
fonte
mv
falhar (por exemplo, sem permissões), você será deixado nopath/to
diretório. Você pode tentarcd path/to && mv oldfile newfile ; cd -
garantir quecd -
sempre seja executado, exceto secd path/to
(sem permissões) falhar, você ainda executarácd -
e irá para o diretório anterior que é indesejado. A resposta do sub-shell mlc (+1) é melhor. Eu acho quecd . && cd path/to && mv oldfile newfile ; cd -
iria funcionar 99,9% do tempo (comcd .
só não se você ou seus diretórios atuais permissões alteradas, e, nesse caso, indo para a dir diferente não é tão ruim de um resultado.