Como copiar um arquivo dentro de seu diretório original, mais facilmente? [duplicado]

0

O que eu quero fazer é basicamente

cp long/directory/path/file long/directory/path/file-copy

Esta ou operações semelhantes são bastante comuns. Digitar o caminho inteiro duas vezes é obviamente complicado, mesmo com o preenchimento automático ou copiar e colar. Existem algumas maneiras simples de fazer isso, mas nenhuma parece ideal:

  • Primeiro cd no diretório e, em seguida, simplesmente cp file file-copy . Menos pressionamentos de tecla, mas acabo no diretório, o que eu realmente não queria.
  • Agrupe os itens acima em uma subshell, sh -c 'cd dir-path; cp file file-copy' , para tornar o cp local. É justo, mas isso significa que eu tenho que digitar os comandos em uma string literal, o que desativa o preenchimento automático e não é bom em geral.
  • Defina o dir como uma variável e, em seguida, apenas cp "$dir/file" "$dir/file-copy" . Pode funcionar bem, mas eu sou meio que paranóico com a poluição do namespace ...
  • %código%. Combina basicamente o envoltório subshell com a definição de variável, através da emulação de um let-let do tipo lambda-calculus com echo dir-path | while read p; do cd "$p"; cp file file-copy; done . Eu gosto disso, mas é um pouco estranho e envolve muitos personagens extras.
  • Qualquer coisa que eu possa usar, que use read , precisa ainda de mais clichê em torno dela.
  • Abra o arquivo com um editor e salve-as. Não é bem aplicável a arquivos que não são de texto e geralmente é dispendioso em termos de recursos.

Existe uma alternativa mais elegante? Idealmente, um que trabalhe com sed 's/file/file-copy/' , analogamente.

    
por leftaroundabout 14.12.2013 / 22:57

1 resposta

2

De acordo com esta pergunta , você pode usar:

cp /long/path/to/file{,-copy}

Esta é uma expansão do shell feita por bash (não tenho certeza sobre os outros), então ele funcionará com qualquer comando.

    
por 14.12.2013 / 23:19

Tags