33

変換したい

相対パス -/home/stevin/data/APP_SERVICE/../datafile.txt

絶対パス -/home/stevin/data/datafile.txt

これを行うためのUnixの組み込みツール、またはこれを実装する方法についての良いアイデアはありますか?

4

5 に答える 5

34

readlink -f /home/stevin/data/APP_SERVICE/../datafile.txtUnix / Linuxにがあれば、探していることを実行する必要がありますreadlink

于 2012-06-28T13:59:40.150 に答える
21

このようなものはディレクトリに役立ちます:(ファイルの場合は、を追加しますbasename

echo $(cd ../dir1/dir2/; pwd)

ファイルの場合、

filepath=../dir1/dir2/file3
echo $(cd $(dirname $filepath); pwd)/$(basename $filepath)
于 2012-06-28T14:00:46.163 に答える
20

realpathまだ誰も言及していないことに驚いています。にパスを渡すrealpathと、パスが正規化されます。

$ ls
Changes
dist.ini

$ ls | xargs realpath
/home/steven/repos/perl-Alt-Module-Path-SHARYANTO/Changes
/home/steven/repos/perl-Alt-Module-Path-SHARYANTO/dist.ini
于 2014-04-09T14:21:25.990 に答える
2

Thrustmasterの回答に基づいていますが、純粋なbashを使用しています:

THING="/home/stevin/data/APP_SERVICE/../datafile.txt"
echo "$(cd ${THING%/*}; pwd)/${THING##*/}"

もちろん、cdパスが実際に存在する必要がありますが、常にそうであるとは限りません。その場合、代わりに小さな Python スクリプトを作成することで、おそらくよりシンプルな生活を送ることができます...

于 2013-11-25T16:26:09.687 に答える