Використання dirname та базового імені, як згадував Майкл, має бути найбезпечнішим способом отримати те, що ви хочете.
У будь-якому випадку, якщо ви дійсно хочете зробити це за допомогою "інструментів лише для удару", ви можете використовувати підстановку параметрів:
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.
Подивіться на малюнок , як деякі регулярні вирази і тому #
або ##
в який - то жадібної / не жадібний модифікатора.
Це може стати в нагоді, якщо вам доведеться зробити кілька складніших добуток частини контуру.