导出最后一个目录的名称

时间:2014-12-17 05:52:05

标签: linux bash pwd

如本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

建议我如何做到这一点。

提前致谢。

2 个答案:

答案 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等而很棘手)。