Se eu vi essa situação como algo único, eu poderia:
a='pwd'
cd /somewhere/else
cp "$a/myfile" .
Se houvesse diretórios em que eu me vi copiando arquivos de forma semi-regular, eu provavelmente definiria algumas variáveis mnemônicas para eles no meu .profile.
Editado para adicionar:
Depois de dormir nele, fiquei imaginando o quão próximo eu poderia chegar de outros comportamentos de GUI / OS, nos quais você seleciona alguns arquivos, "corta" ou "copia" os arquivos e os "cola" em algum outro lugar. O melhor mecanismo de seleção que eu consegui encontrar foi o seu cérebro / preferências, além do recurso globbing do shell. Eu não sou muito criativo com a nomeação, mas esta é a ideia básica (na sintaxe Bash):
function copyfiles {
_copypastefiles=("$@")
_copypastesrc="$PWD"
_copypastemode=copy
}
function cutfiles {
_copypastefiles=("$@")
_copypastesrc="$PWD"
_copypastemode=cut
}
function pastefiles {
for f in "${_copypastefiles[@]}"
do
cp "${_copypastesrc}/$f" .
if [[ ${_copypastemode} = "cut" ]]
then
rm "${_copypastesrc}/$f"
fi
done
}
Para usá-lo, coloque o código em ~ / .bash_profile, em seguida, cd
no diretório de origem e execute copyfiles glob*here
ou cutfiles glob*here
. Tudo o que acontece é que o seu shell expande os globs e coloca esses nomes de arquivos em um array. Você então cd
para o diretório de destino e executa pastefiles
, que executa um comando cp
para cada arquivo de origem. Se você tiver "recortado" anteriormente os arquivos, os pastefiles também removerão o arquivo de origem (ou tentará). Isso não faz nenhuma verificação de erros (de arquivos existentes, antes de potencialmente sufocá-los com o cp
; ou de você ter permissões para remover os arquivos durante um "recorte" ou de poder acessar novamente o diretório de origem após você sai disso).