3

我需要在 UNIX 中打印当前目录、父目录和根目录的路径。我可以使用命令或 shell 脚本。我设法为当前目录和父目录执行此操作,但我不知道如何为根目录打印它。

这是我所做的:

  • 当前的:pwd
  • 家长:echo $(pwd) | sed -e s/\\/[^\\/]*$//
4

3 回答 3

3

gnu sed

echo $(pwd) | sed -r -e 'p; :a; s#(.*)/.*#\1#; H; ta; x' | sed '/^$/d'  

这将打印当前 -> 根目录中的所有目录

它使用贪婪搜索'/'只保留左边部分,附加在保持空间中,ta是替代的条件分支,所以如果有一个它分支到:a,最后x将保持空间交换到模式空间。
最后一个 sed 命令用于清除空行

于 2015-06-07T22:28:40.740 回答
1

我认为使用 awk 更容易做到这一点:

echo $(pwd) | awk 'BEGIN {FS=OFS="/"} {l=NF; while (i++<l-1) {print; NF--}}'

解释

这将打印当前 --> 根目录中的所有目录。它通过打印行,然后递减NF字段数来做到这一点。请注意,我已将输入和输出字段分隔符都设置为/.

于 2015-06-08T00:55:28.133 回答
1

与@josifoski 相同的想法

pwd | sed ':a;\#/\(.*\)/[^/]*# {p;s##/\1#;ba}'

打印并循环直到只有第一个文件夹名称,每次循环删除路径的最后一个文件夹

于 2015-06-08T06:19:06.933 回答