#!/bin/sh # lists all parent directories. # arguments: path ... # example output # /srv/http/test # /srv/http # /srv split_directories() { dir="$1" while test "$dir" != "/" -a "$dir" != "."; do printf "%s\n" "$dir" dir=$(dirname "$dir") done } if test -z "$1"; then split_directories "$(pwd)" else for dir in "$@"; do case "$dir" in /*) # Absolute path split_directories "$dir" ;; *) # Relative path split_directories "$(pwd)/$dir" ;; esac done fi