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.
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:
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. 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. cp "$dir/file" "$dir/file-copy" . Pode funcionar bem, mas eu sou meio que paranóico com a poluição do namespace ... 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. read , precisa ainda de mais clichê em torno dela. Existe uma alternativa mais elegante? Idealmente, um que trabalhe com sed 's/file/file-copy/' , analogamente.
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.