การใช้ dirname และ basename อย่างที่ Michael พูดถึงควรเป็นวิธีที่ปลอดภัยที่สุดในการได้รับสิ่งที่คุณต้องการ
อย่างไรก็ตามหากคุณต้องการทำเช่นนี้ด้วย "เครื่องมือทุบตีเท่านั้น" คุณสามารถใช้การทดแทนพารามิเตอร์:
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
ดูรูปแบบเช่น regex และ#
หรือ##
เป็นตัวดัดแปลงโลภ / ไม่โลภบางชนิด
สิ่งนี้อาจมีประโยชน์หากคุณจะต้องแยกส่วนเส้นทางที่ซับซ้อนมากขึ้น