是否有一种简单的方法可以打印file.txt的完整路径?

file.txt = /nfs/an/disks/jj/home/dir/file.txt

<命令>

dir> <command> file.txt  

应该打印

/nfs/an/disks/jj/home/dir/file.txt

当前回答

创建一个如下所示的函数(使用pwd回显文件的绝对路径,并将文件添加到路径的末尾:

abspath() { echo $(pwd "$1")/"$1"; }

现在你可以找到任何文件路径:

abspath myfile.ext

其他回答

这适用于Linux和Mac OSX:

echo $(pwd)$/$(ls file.txt)

下面的方法通常可以达到目的:

 echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"

在mac下面提到的行工作。不需要添加任何花哨的线条。

> pwd filename

你可以把它保存在壳里。Rc或者直接放到控制台

function absolute_path { echo "$PWD/$1"; }
alias ap="absolute_path"

例子:

ap somefile.txt

将输出

/home/user/somefile.txt

我猜你用的是Linux。

我在coreutils 8.15中找到了一个名为realpath的实用程序。

realpath -s file.txt
/data/ail_data/transformed_binaries/coreutils/test_folder_realpath/file.txt

由于问题是关于如何获取文件的完整/绝对路径,而不是关于如何获取符号链接的目标,请使用-s或——no-symlinks,这意味着不要展开符号链接。

根据@styrofoam-fly和@arch-standton注释,realpath本身并不检查文件是否存在,为了解决这个问题,添加e参数:realpath -e file