Использование dirname и basename, как было упомянуто Майклом, должно быть самым безопасным способом получить то, что вы хотите.
В любом случае, если вы действительно хотите сделать это с помощью инструментов «bash only», вы можете использовать подстановку параметров:
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.
Этот пример взят из Руководства по расширенному написанию сценариев, которое стоит посмотреть.
Объяснение довольно простое:
$ {var # Pattern} Удалите из $ var самую короткую часть $ Pattern, соответствующую внешнему концу $ var. $ {var ## Pattern} Удалите из $ var самую длинную часть $ Pattern, соответствующую внешнему концу $ var.
Посмотрите на шаблон как на регулярное выражение #
или ##
как на жадный / не жадный модификатор.
Это может стать полезным, если вам придется делать более сложные извлечения части пути.