# usage: VAR=$(trim " string ") trim() { local var=$1 var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters echo -n "$var" } # usage: CANONICALIZED_STRING=$(canonalize ) # usage with relative path requires you to be in the correct directory. canonicalize() { cd -P -- "$(dirname -- "$1")" && printf '%s\n' "$(pwd -P)/$(basename -- "$1")" }