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.