50 lines
836 B
Bash
50 lines
836 B
Bash
# 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
|
|
}
|