канонизировать имя пути на солярисе - PullRequest
4 голосов
/ 07 августа 2009

В системе GNU я бы просто использовал readlink -f $SOME_PATH, но Solaris не имеет readlink.

Я бы предпочел что-то, что хорошо работает в bash, но другие программы в порядке, если нужно.

Редактировать: Лучшее из того, что я придумал, использует cd и pwd, но требует еще нескольких хакеров для работы с файлами, а не только с каталогами.

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

Ответы [ 3 ]

6 голосов
/ 18 октября 2012

Может быть излишним, но это переносимая ОС, и ей не нужно сначала находить ни dirname, ни basename .. этот однострочный работает. Просто введите свое имя файла, где вы видите $ origFile:

perl -e "использовать Cwd realpath; вывести realpath (\" $ origFile \ ");"

4 голосов
/ 07 августа 2009

это помогает? С указанной страницы:

Создайте файл с именем canonicalize со следующим содержанием:

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

Сделать файл исполняемым:

chmod +x canonicalize`

И наконец:

user@host$ canonicalize ./bash_profile
2 голосов
/ 02 июля 2011
#!/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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...