В зависимости от некоторых деталей, вам может потребоваться сделать что-то вроде этого:
r=$(pwd)
case "$TARG" in
/*) p=$r;;
*) p="";;
esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"
... это в основном изменится на каталог SRC и скопирует его в целевое устройство, а затем вернется к тому, откуда вы начали.
Дополнительное беспокойство заключается в обработке относительных или абсолютных целей.
(Это не зависит от тонкой семантики самой команды cp
... о том, как она обрабатывает спецификации источника с помощьюили без трейлинга / ... так как я не уверен, что они стабильны, переносимы и надежны за пределами GNU cp
, и я не знаю, будут ли они продолжаться в будущем).