我需要在 UNIX 中打印当前目录、父目录和根目录的路径。我可以使用命令或 shell 脚本。我设法为当前目录和父目录执行此操作,但我不知道如何为根目录打印它。
这是我所做的:
- 当前的:
pwd
- 家长:
echo $(pwd) | sed -e s/\\/[^\\/]*$//
gnu sed
echo $(pwd) | sed -r -e 'p; :a; s#(.*)/.*#\1#; H; ta; x' | sed '/^$/d'
这将打印当前 -> 根目录中的所有目录
它使用贪婪搜索'/'只保留左边部分,附加在保持空间中,ta是替代的条件分支,所以如果有一个它分支到:a,最后x将保持空间交换到模式空间。
最后一个 sed 命令用于清除空行
我认为使用 awk 更容易做到这一点:
echo $(pwd) | awk 'BEGIN {FS=OFS="/"} {l=NF; while (i++<l-1) {print; NF--}}'
解释
这将打印当前 --> 根目录中的所有目录。它通过打印行,然后递减NF
字段数来做到这一点。请注意,我已将输入和输出字段分隔符都设置为/
.
与@josifoski 相同的想法
pwd | sed ':a;\#/\(.*\)/[^/]*# {p;s##/\1#;ba}'
打印并循环直到只有第一个文件夹名称,每次循环删除路径的最后一个文件夹