2013-07-25 130 views
1

我希望我清楚地说明了我的问题。具体而言,它是这样的:如何打印我当前目录的父目录的名称

我想用test或者case语句来确定变量$ DIR中包含的目录名是我的当前目录(。)还是它的父目录(..)

当然,我可以回显我的当前目录(echo $ PWD),但回显$ PWD的父母的最简单方法是什么?

谢谢。

回答

4

您可以使用${PWD%/*}

$ echo $PWD 
/home/me/test/t 
$ echo ${PWD%/*} 
/home/me/test 

由于表达${PWD%/*}是从$PWD回剥/*最短的匹配:

Bash Reference Manual → 3.5.3 Shell Parameter Expansion

$ {参数%字}

该单词被扩展为产生一个模式,就像在文件名扩展中一样。如果模式与参数展开值的尾部分相匹配,则展开的结果是删除了最短匹配模式的参数值。如果参数是'@'或'',则将模式删除操作依次应用于每个位置参数,并且扩展是结果列表。如果参数是一个以'@'或''为下标的数组变量,则模式删除操作将依次应用于数组的每个成员,并且该扩展是结果列表。

+0

+1。但是,它并没有在这里工作。在我做了'cd /':)之后 – Kent

+0

@Kent也许它会在'cd //'之后工作:) – devnull

3
dirname $PWD 

dirname $(pwd) 
0

realpath

parent=$(realpath "$PWD/..") 
+0

请提供文档来解释这个问题的“如何”。 – rfornal

相关问题