我编写了一个 Bash 脚本,它将输入文件作为参数并读取它。
此文件包含一些到其他文件的路径(相对于其位置)。
我希望脚本转到包含输入文件的文件夹,以执行进一步的命令。
在 Linux 中, 如何从输入文件中获取文件夹(仅是文件夹)?
原文由 BobMcGee 发布,翻译遵循 CC BY-SA 4.0 许可协议
看看 realpath
在 GNU/Linux 、 FreeBSD 和 NetBSD 上可用,但在 OpenBSD 6.8 上不可用。我使用类似的东西:
CONTAININGDIR=$(realpath ${FILEPATH%/*})
做你想做的事。
原文由 Richard Sitze 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答793 阅读✓ 已解决
2 回答3.2k 阅读
要获得完整路径,请使用:
要获取文件的目录:
您也可以将两者结合起来:
如果
readlink -f
在您的系统上不可用,您可以使用这个* :请注意,如果您只需要移动到指定为相对路径的文件的目录,则不需要知道绝对路径,相对路径是完全合法的,因此只需使用:
如果您希望(在脚本运行时)返回到原始路径,请在完成后使用
pushd
而不是cd
和popd
。* 虽然
myreadlink
以上在这个问题的上下文中已经足够好了,但它相对于readlink
上面建议的工具有一些限制。例如,它没有正确地跟随指向具有不同basename
的文件的链接。