【问题标题】:How to get basename of parent's parent's directory name in shell?如何在 shell 中获取父级父级目录名称的基本名称?
【发布时间】:2017-05-31 17:33:32
【问题描述】:

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

例如:

$ pwd
/home/tmp/terminal/env/1239754/control/state
$

我想得到这个 - 1239754

【问题讨论】:

  • 您想要当前工作目录的父级的基本名称,还是包含调用脚本的链接的目录的父级的基本名称,或者当前工作目录的基本名称运行脚本的进程的父进程?
  • @WilliamPursell。我想要运行脚本的父级父级父级的基本名称。

标签: linux bash shell


【解决方案1】:

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

basename ${PWD%/*/*}

输出:

1239754

【讨论】:

    【解决方案2】:

    我建议使用basenamedirname

    basename $(dirname $(dirname "$PWD"))
    

    【讨论】:

    • 可以用"${PWD%/*}"代替$(dirname "$PWD")
    • @123:是的,这也是可能的。
    • @cyrus @ 123。谢谢,两者似乎都有效 :) 你能分享我如何更上一层楼吗? ex - pwd /home/tmp/terminal/env/1239754/control/state 我想得到这个 - 1239754。
    • @Insanitee:我已经修复了我的错误。
    • 请注意,对于$PWD 的偏心值,您可能会遇到问题:basename $(dirname $(dirname "/Users/Me/ spaced out/ man kind / noxiousness / oblivion"))。您可以通过将每个 $(…) 括在双引号中来解决此问题:basename "$(dirname "$(dirname "/Users/Me/ spaced out/ man kind / noxiousness / oblivion")")"。这会产生□man□kind□(我已经减少到使用 来指示评论MarkDown 中的空格)。
    【解决方案3】:

    你可以试试这个

    basename `cd ../..; pwd`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 2017-08-14
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多