如何在shell中获取父母的父母的目录名称的基名?

Ins*_*tee 3 linux bash shell

我想在shell脚本中掌握当前目录的父目录的父目录的基本名称。

例如:

$ pwd
/home/tmp/terminal/env/1239754/control/state
$
Run Code Online (Sandbox Code Playgroud)

我想要这个- 1239754

Unw*_*ble 6

根据 Cyrus 和 123 的建议,这可能是最简单的解决方案,也适用于 unicode 字符。只需要再加一个 /*

basename ${PWD%/*/*}
Run Code Online (Sandbox Code Playgroud)

输出:

1239754
Run Code Online (Sandbox Code Playgroud)


Cyr*_*rus 5

我建议使用basenamedirname

basename $(dirname $(dirname "$PWD"))
Run Code Online (Sandbox Code Playgroud)

  • 可以使用`“ $ {PWD%/ *}”`代替`$(dirname“ $ PWD”)` (2认同)
  • 请注意,对于`$PWD` 的古怪值,您可能会遇到问题:`basename $(dirname $(dirname "/Users/Me/ spaced out/ man kind / noxiousness / Obevion"))`。您可以通过将每个 `$(...)` 括在双引号中来解决这个问题:`basename "$(dirname "$(dirname "/Users/Me/ spaced out/man kind / noxiousness / Obevion")")"`。这产生了`□man□kind□`(我已经简化为使用`□`来表示注释MarkDown中的空格)。 (2认同)