当前位置: 首页 > 面试题库 >

如何在bash中获取文件的绝对目录?

谷弘致
2023-03-14
问题内容

我已经编写了一个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代替cd,并popd在完成后使用。

尽管myreadlink在此问题的上下文中上述内容已经足够好,但相对于readlink上面建议的工具而言,它具有一些局限性。例如,它没有正确地链接到具有的不同文件的链接basename



 类似资料:
  • 问题内容: 嗨,我需要使用FileInputStream读取文件,但是我没有获得正确的路径。我的文件位于C:\ Users \ tester \ Documents \ Java Project \ Samples \ ProjectOne \ src \ pdfReader中。但是,当我使用以下代码时,我得到的错误路径是“ / C:/ Users / tester / Documents / J

  • 假设标准maven设置。 在Java中,我如何获得文件的绝对路径?

  • 我正试图在我的Android应用程序中导入sky.csv文件。 请帮我做这个。我试过这么多方法。然而,我没有得到任何适当的解决办法。

  • 问题内容: 给定路径,例如,我如何找到相对于Python中当前工作目录的文件的绝对路径?例如在Windows上,我可能会得到以下结果: 问题答案: 如果已经是绝对路径,也可以使用:

  • 本文向大家介绍获取Java中目录或文件的绝对路径,包括了获取Java中目录或文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件或目录的绝对路径名。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbs