如本question所述,我们可以获取当前工作目录的名称。 但是如何获得最后一个目录名?
情景:
# working directory /etc/usr/abc/xyz.txt
printf '%s\n' "${PWD##*/}" #prints abc
#i want to print usr
printf '%s\n' "%{PWD##*/-1}" #prints me whole path
建议我如何做到这一点。
提前致谢。
答案 0 :(得分:7)
经典的方式是:
echo $(basename $(dirname "$PWD"))
dirname
删除路径的最后一个组件; basename
返回剩下的最后一个组成部分。这具有在根目录附近工作的额外优点,其中使用${PWD##…}
等的变量编辑不一定有效。
答案 1 :(得分:4)
假设您不想因某种原因想要运行basename "$(dirname "$PWD")"
而您真的想要使用扩展(请注意需要注意的警告here)。
# Strip the current directory component off.
tmppwd=${PWD%/*}
# Strip all leading directory components off.
echo "${tmppwd##*/}"
但其中一个链接注释中提到的数组扩展技巧很聪明(虽然因为其他扩展属性如globbing等而很棘手)。