better-cd.bash/cd.sh

50 lines
836 B
Bash
Raw Permalink Normal View History

2020-01-16 09:57:49 +01:00
# Better cd
# Usage: cd [full_path|partial_path|path_initials|-]
#
# Examples:
# ~/playground/ $ find . -type d
# .
# ./slides
# ./slides/small
# ./slides/huge
# ./swings
# ./swings/small
# ./swings/large
# ~/playground/ $ cd sl
# ~/playground/slides/ $ cd
# ~ $ cd p/s/h
# ~/playground/slides/huge $ cd ../..
# ~/playground/ $ cd -
# ~/playground/slides/huge $ cd -
# ~/playground/ $ cd s/s
# Warning: Multiple possible paths. Going to first path.
# ~/playground/slides/small $
function cd {
if [[ $# -eq 0 ]]; then
builtin cd
return
fi
if [[ $# -gt 1 ]]; then
echo "too many arguments" >&2
return 1
fi
# cd -
if [[ $1 == '-' ]]; then
builtin cd -
return
fi
# Check for absolute path first
if [[ -d $1 ]]; then
builtin cd "$1"
return
fi
# If nothing works
echo "$1: No such directory." >&2
return 1
}