From 0e8e59e674ca9e6ca2028836108ed03e791aa1d0 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 15 Mar 2017 16:03:07 -0700 Subject: [PATCH] cd_history: handle multiple args to `cd` --- .profile.d/aliases.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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' -- 2.39.5