skip to content
The Way Software Development, LLC logoWay Software

Time Travel Directories

Published / 1 min read

last updated:

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.