Usar dirname y basename como lo menciona Michael debería ser la forma más segura de obtener lo que desea.
De todos modos, si realmente quieres hacer esto con "bash only tools", puedes usar la sustitución de parámetros:
echo `basename $PWD` # Basename of current working directory.
echo "${PWD##*/}" # Basename of current working directory.
echo
echo `basename $0` # Name of script.
echo $0 # Name of script.
echo "${0##*/}" # Name of script.
echo
filename=test.data
echo "${filename##*.}" # data
# Extension of filename.
Este ejemplo está tomado directamente de la Guía avanzada de secuencias de comandos Bash que vale la pena echarle un vistazo.
La explicación es bastante simple:
$ {var # Pattern} Eliminar de $ var la parte más corta de $ Pattern que coincida con el extremo frontal de $ var. $ {var ## Pattern} Elimina de $ var la parte más larga de $ Pattern que coincide con la parte frontal de $ var.
Mire el patrón como una expresión regular y el #
o ##
como algún tipo de modificador codicioso / no codicioso.
Esto podría ser útil si tendrá que hacer algunas extracciones más complicadas de una parte de rutas.