From: Mike Frysinger Date: Wed, 15 Mar 2017 23:03:07 +0000 (-0700) Subject: cd_history: handle multiple args to `cd` X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=0e8e59e674ca9e6ca2028836108ed03e791aa1d0;p=home.git cd_history: handle multiple args to `cd` --- diff --git a/.profile.d/aliases.sh b/.profile.d/aliases.sh index 103b795..5de5ef9 100644 --- a/.profile.d/aliases.sh +++ b/.profile.d/aliases.sh @@ -103,6 +103,25 @@ cd_history() { fi if command cd "$@" ; then pushd -n "${PWD}" >/dev/null + elif [[ $# -gt 1 ]] ; then + # The `cd` above should have shown an error message for us. + local arg first_arg="$1" + while [[ $# -gt 0 ]] ; do + arg="$1" + shift + if [[ -d ${arg} ]] ; then + if [[ $# -gt 0 ]] ; then + printf 'cd: remaining: %s\n' "$@" >&2 + fi + printf 'cd: entering: %s\n' "${arg}" >&2 + cd_history "${arg}" + return + else + printf 'cd: skipping: %s\n' "${arg}" >&2 + fi + done + # If we're still here, then we didn't cd anywhere. + echo "cd: cwd is unchanged!" >&2 fi } alias cd='cd_history'