我希望我清楚地说明了我的问题。具体而言,它是这样的:如何打印我当前目录的父目录的名称
我想用test或者case语句来确定变量$ DIR中包含的目录名是我的当前目录(。)还是它的父目录(..)
当然,我可以回显我的当前目录(echo $ PWD),但回显$ PWD的父母的最简单方法是什么?
谢谢。
我希望我清楚地说明了我的问题。具体而言,它是这样的:如何打印我当前目录的父目录的名称
我想用test或者case语句来确定变量$ DIR中包含的目录名是我的当前目录(。)还是它的父目录(..)
当然,我可以回显我的当前目录(echo $ PWD),但回显$ PWD的父母的最简单方法是什么?
谢谢。
您可以使用${PWD%/*}
:
$ echo $PWD
/home/me/test/t
$ echo ${PWD%/*}
/home/me/test
由于表达${PWD%/*}
是从$PWD
回剥/*
最短的匹配:
从Bash Reference Manual → 3.5.3 Shell Parameter Expansion:
$ {参数%字}
该单词被扩展为产生一个模式,就像在文件名扩展中一样。如果模式与参数展开值的尾部分相匹配,则展开的结果是删除了最短匹配模式的参数值。如果参数是'@'或'',则将模式删除操作依次应用于每个位置参数,并且扩展是结果列表。如果参数是一个以'@'或''为下标的数组变量,则模式删除操作将依次应用于数组的每个成员,并且该扩展是结果列表。
dirname $PWD
或
dirname $(pwd)
+1。但是,它并没有在这里工作。在我做了'cd /':)之后 – Kent
@Kent也许它会在'cd //'之后工作:) – devnull