Para fazer isso corretamente, seria necessário analisar novamente todas as opções do cp, e isso não é uma boa ideia. Mas aqui está algo que deve se aproximar:
# run cp command as-given, unless any argument ends in a slash
safecp() {
for arg; do
case $arg in */)
echo "safecp: trailing slash in cp $*" >&2
return 1
;;
esac
done
cp "$@"
}
Como alternativa, tente colocar
set mark-directories off
no seu ~/.inputrc
para fazer o bash não adicionar automaticamente uma barra ao completar os diretórios.