gpt4 book ai didi

linux - 如何在 Bash 中获取文件的绝对目录?

转载 作者:IT老高 更新时间:2023-10-28 12:29:35 34 4
gpt4 key购买 nike

我编写了一个 Bash 脚本,该脚本将输入文件作为参数并读取它。
此文件包含一些到其他文件的路径(相对于其位置)。

我希望脚本转到包含输入文件的文件夹,以执行更多命令。

在 Linux 中,如何从输入文件中获取文件夹(仅是文件夹)?

最佳答案

要获取完整路径,请使用:

readlink -f relative/path/to/file

获取文件目录:

dirname relative/path/to/file

您也可以将两者结合起来:

dirname $(readlink -f relative/path/to/file)

如果 readlink -f 在您的系统上不可用,您可以使用这个*:

function myreadlink() {
(
cd "$(dirname $1)" # or cd "${1%/*}"
echo "$PWD/$(basename $1)" # or echo "$PWD/${1##*/}"
)
}

注意,如果你只需要移动到指定为相对路径的文件的目录,你不需要知道绝对路径,相对路径是完全合法的,所以只需使用:

cd $(dirname relative/path/to/file)

如果您希望(在脚本运行时)返回到原始路径,请使用 pushd 代替 cdpopd完成后。


* 虽然上面的 myreadlink 在这个问题的上下文中已经足够好,但它相对于上面建议的 readlink 工具有一些限制。例如,它没有正确地跟随指向具有不同 basename 的文件的链接。

关于linux - 如何在 Bash 中获取文件的绝对目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577093/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com