在bash中扩展可能的相对路径

105
作为我的脚本的参数,有一些文件路径。这些路径可以是相对路径(或包含~)。但是,对于我编写的函数,我需要绝对路径,但不需要解析它们的符号链接。
是否有任何此功能的函数?

2
尝试使用readlink函数 - http://andy.wordpress.com/2008/05/09/bash-equivalent-for-php-realpath/ - arunkumar
7
readlink 解析符号链接;但 OP 不希望这样。 - Keith Thompson
可能是将相对路径转换为绝对路径的重复问题。 - tripleee
可能是重复的问题:bash/fish命令打印文件的绝对路径 - Trevor Boyd Smith
1
echo $(cd some_directory && pwd),不解析符号链接,如果some_directory不存在则失败。工作目录不受影响。或者将其赋值给变量MY_PATH=$(cd some_directory && pwd) - qeatzy
或者按照readlink文档的建议使用realpath -s "./some/dir"。快速,简单,没有任何函数(如果您的操作系统支持的话,应该会?)就像我的答案所说的那样。 https://dev59.com/Nmw05IYBdhLWcg3wnjPC#64706902 - Raid
11个回答

-1
你必须专门使用bash吗?我需要做这个,但是因为Linux和OS X之间的差异而感到厌烦。所以我使用PHP来快速解决问题。
#!/usr/bin/php <-- or wherever
<?php
{
   if($argc!=2)
      exit();
   $fname=$argv[1];
   if(!file_exists($fname))
      exit();
   echo realpath($fname)."\n";
}
?>

我知道这不是一个非常优雅的解决方案,但它确实有效。


如果您已经知道文件的路径或文件在当前目录中,此功能仅返回文件的路径...不会在PATH设置中查找文件。 - G-Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接