fix: properly escape command substitution
fix: check full name on file conflict detection