The first time I saw somebody use cd -
my mind was blown. If it’s new to you, cd -
will change
to your previous directory. The shell is tracking a stack of recent directories, which can be seen
via the builtin dirs
command. You can also directly interface with the directory stack via pushd
and popd
. This is so cool and it’s the backing mechanism that cd -
uses. With that new
knowledge, I created a small zsh function to help me time travel to any directory on the stack,
instead of just the most recent.
function travel() {
local options=()
while read -r dir; do
options+=("$dir")
done < <(dirs -p)
select dir in "${options[@]}"; do test -n "$dir" && break; echo "Invalid Selection"; done
eval cd "$dir"
}
When this function gets invoked, you’re prompted to select an option from the directories on the stack and it will navigate back to it.