规范化solaris上的路径名称

时间:2009-08-07 15:07:51

标签: bash path solaris symlink

在GNU系统上,我只使用readlink -f $SOME_PATH,但Solaris没有readlink。

我更喜欢在bash中运行良好的东西,但如果需要,其他程序也可以。

编辑:到目前为止,我提出的最佳功能是使用cd和pwd,但需要更多的hackery来处理文件而不仅仅是目录。

cd -P "$*"
REAL_PATH=`pwd`

3 个答案:

答案 0 :(得分:6)

可能有点矫枉过正,但这是OS便携式的,并且不需要先找到dirname和basename二进制文件..这个单行程序有效。只需传入你看到$ origFile的文件名:

perl -e“使用Cwd realpath; print realpath(\”$ origFile \“);”

答案 1 :(得分:3)

this有帮助吗?从引用的页面:

使用以下内容创建名为canonicalize的文件:

#!/bin/bash
cd -P -- "$(dirname -- "$1")" &&
printf '%s\n' "$(pwd -P)/$(basename -- "$1")"

使文件可执行:

chmod +x canonicalize`

最后:

user@host$ canonicalize ./bash_profile

答案 2 :(得分:2)

#!/bin/bash

# Resolves a full path
# - alternative to "readlink -f", which is not available on solaris
canonicalpath() {
  if [ -d $1 ]; then
    pushd $1 > /dev/null 2>&1
    echo $PWD
  elif [ -f $1 ]; then
    pushd $(dirname $1) > /dev/null 2>&1
    echo $PWD/$(basename $1)
  else
    echo "Invalid path $1"
  fi
  popd > /dev/null 2>&1
}