我们都知道可以在命令行中使用pwd命令来获取当前目录的完整路径(绝对路径):pwd那么,如何获取绝对路径呢?一个文件的路径?打印文件完整路径有几种方式:readlinkrealpathfindls和pwd结合使用find$(pwd)-namesample.txt/home/gliu/sample.txt下面详细介绍这些命令。但在此之前,我建议了解绝对路径和相对路径概念的基础知识。使用readlink获取文件路径readlink的最初目的是解析符号链接,但是我们可以用它来显示文件的完整路径,语法结构如下:readlink-ffilename举例如下:$readlink-fsample.txt/home/gliu/sample.txt使用realpath获取文件的完整路径realpath本来是用来解析绝对文件名的,这里我们也可以用它来显示文件的完整路径:realpathfilename下面是一个示例:$realpathsample.txt/home/gliu/sample.txt如果您使用符号链接,将显示原始文件的实际路径。您可以强制它不遵循符号链接(即显示当前文件的路径):realpath-sfilename下面是一个示例,默认情况下它显示源文件的完整路径,然后我强制它显示符号链接而不是原文件:$realpathlinking-park/home/gliu/Documents/ubuntu-commands.md$realpath-slinking-park/home/gliu/linking-park使用find命令获取文件的绝对路径如下是使用find命令获取文件路径的方法。在find命令中,如果给定的路径是一个点。,然后它会显示一个相对路径;如果给出绝对路径,则可以获得搜索文件的绝对路径。find命令使用命令占位符,如下:find$(pwd)-namefilename我们可以通过这种方式获取单个文件的绝对路径:$find$(pwd)-namesample.txt/home/gliu/sample.txt或者,您可以使用匹配模式(例如星号*)来获取一组文件的路径:$find$(pwd)-name"*.pdf"/home/gliu/Documents/eBooks/think-like-a-programmer.pdf/home/gliu/Documents/eBooks/linux-guide.pdf/home/gliu/Documents/eBooks/absolute-open-bsd.pdf/home/gliu/Documents/eBooks/theory-of-fun-for-game-design.pdf/home/gliu/Documents/eBooks/Ubuntu1804english.pdf/home/gliu/Documents/eBooks/computer_science_distilled_v1.4.pdf/home/gliu/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf使用ls命令打印完整路径使用ls命令获取文件的绝对路径,稍微复杂一些。我们可以在ls命令中使用环境变量PWD来显示文件和目录的绝对路径,如下:ls-ld$PWD/*使用上面的命令,会得到如下输出:$ls-ld$PWD/*-r--rw-r--1gliugliu0Jul2716:57/home/gliu/test/file2.txtdrwxrwxr-x2gliugliu4096Aug2216:58/home/gliu/test/new打印使用上述命令的某个文件文件的完整路径可以使用如下:ls-l$PWD/filename这不是最好的解决方案,但它有效,请参见以下示例:$ls-l$PWD/sample.txt-rw-r--r--1gliugliu12813Sep711:50/home/gliu/sample.txt上面我们介绍了Linux中获取文件完整路径的4种方法,其中find和lscommands是最常用的,而realpath和readlink是最常用的这两种方法对于很多新用户来说可能都很清楚,但是凡事总有第一次,学习新东西总是好的。有其他想法欢迎讨论。
