Menggunakan dirname dan nama kecil seperti yang disebutkan oleh Michael harus menjadi cara teraman untuk mendapatkan apa yang Anda inginkan.
Pokoknya jika Anda benar-benar ingin melakukan ini dengan "alat bash saja" Anda bisa menggunakan substitusi parameter:
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.
Contoh ini diambil langsung dari Panduan Script Bash Lanjutan yang patut dilihat.
Penjelasannya cukup sederhana:
$ {var # Pattern} Hapus dari $ var bagian terpendek dari $ Pattern yang cocok dengan ujung depan $ var. $ {var ## Pattern} Hapus dari $ var bagian terpanjang dari $ Pattern yang cocok dengan ujung depan $ var.
Lihatlah polanya seperti regex dan #
atau ##
sebagai semacam modifier yang serakah / tidak serakah.
Ini mungkin berguna jika Anda harus melakukan ekstraksi bagian path yang lebih rumit.