Acho que você deveria fazer algo como as aplicações GUI. Minha idéia para fazer isso é escrever duas funções para Copiar e Colar, onde Copiar escreve o caminho dos arquivos a serem copiados para um arquivo temporário e Colar lê esses caminhos e simplesmente chama o comando cp
. Minha implementação (para ser colocado no arquivo .bashrc
) é como abaixo:
function Copy {
touch ~/.clipfiles
for i in "$@"; do
if [[ $i != /* ]]; then i=$PWD/$i; fi
i=${i//\/\\}; i=${i//$'\n'/$'\\n'}
printf '%s\n' "$i"
done >> ~/.clipfiles
}
function Paste {
while IFS= read src; do
cp -Rdp "$src" .
done < ~/.clipfiles
rm ~/.clipfiles
}
Podem ser escritos scripts melhores para implementar essa idéia, eu testei o meu próprio e funciona muito bem para arquivos e pastas (não sei como xclip
poderia funcionar para copiar pastas !!)
Por exemplo:
/usr/local/dir1# Copy a.txt *.cpp
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste
/usr/local/dir1# Copy *.h *.cpp b.txt subdir1
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste
/usr/local/dir1# Copy a.txt b.txt
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Copy c.txt d.txt
/usr/local/dir2# cd /usr/local/dir3
/usr/local/dir3# Paste