关于linux:导出最后一个目录的名称

exporting name of last but one directory

正如在这个问题中所解释的,我们可以得到当前工作目录的名称。但是如何得到最后一个目录名?

脚本:

1
2
3
4
5
6
# working directory /etc/usr/abc/xyz.txt
printf '%s
'
"${PWD##*/}" #prints abc
#i want to print usr
printf '%s
'
"%{PWD##*/-1}" #prints me whole path

建议我怎么做。

事先谢谢。


经典的方法是:

1
echo $(basename $(dirname"$PWD"))

dirname删除路径的最后一个组件;basename返回剩余部分的最后一个组件。这有在根目录附近工作的额外优点,其中使用${PWD##…}等进行变量编辑不一定有效。


假设您不只是出于某种原因而运行basename"$(dirname"$PWD")",并且您确实希望为此使用扩展(请注意这里的注意事项)。

1
2
3
4
# Strip the current directory component off.
tmppwd=${PWD%/*}
# Strip all leading directory components off.
echo"${tmppwd##*/}"

但是其中一个链接注释中提到的数组扩展技巧是聪明的(尽管由于其他扩展属性(如globbing等)而很棘手)。