# From https://stackoverflow.com/a/45336078 paths=(${(s:/:)PWD}) cur_path='/' cur_short_path='/' for directory in ${paths[@]} do cur_dir='' for (( i=0; i<${#directory}; i++ )); do cur_dir+="${directory:$i:1}" matching=("$cur_path"/"$cur_dir"*/) if [[ ${#matching[@]} -eq 1 ]]; then break fi done cur_short_path+="$cur_dir/" cur_path+="$directory/" if [[ $cur_path == $HOME/ ]]; then cur_short_path='~/' fi done printf %b "${cur_short_path: : -1}" echo