如何在 bash 中获取文件的完整路径?

如何在 bash 中获取文件的完整路径?

我想要一种简单的方法来获取文件的完整路径。我目前输入的是:

echo `pwd`/file.ext

为了缩短它,我创建了一个 bash 别名:

alias fp='echo `pwd`/'

但是现在如果我打字,和fp file.ext之间会出现一个空格。/file.ext

这样的命令是否已经存在,而我却找不到它?如果没有,我该如何在 bash 中创建这样的别名或函数?

答案1

在 Linux 系统上,您应该已经readlink安装了 GNU coreutils 项目,并且可以执行以下操作:

readlink -f file.ext

Debian/ubuntu 系统可能有真实路径安装的实用程序“提供的功能与/bin/readlink -fcoreutils 包中的大部分相同”。

答案2

您可以使用:

realpath file.ext

答案3

https://stackoverflow.com/a/3915420/5795941

这是唯一我能够接受的方法。它不会像 realpath 和 readlink 那样展开链接,而且是我见过的经典方法。

#! /bin/sh
echo "$(cd "$(dirname "$1")"; pwd -P)/$(basename "$1")"

答案4

用你现在使用的东西来回答你的问题:

别名会在您当前输入的位置展开。您输入的是:

% fp<SPACE>file.ext

这变成

% echo `pwd`<SPACE>file.exe

您可以使用一个函数来避免这种情况:

function fp() {
    echo `pwd`/"$1"
}

您可以照常使用它:

% fp file.ext

相关内容