cygwinでフルパス
対策
「readlink.exe」を使う。これだけ。「canonical path*1」で調べて見つけました。ファイルが存在しなくてもフルパス(絶対パス)を与えてくれます。
存在しないファイル「missing.txt」の絶対パスを知るには「-f」オプションが要ります。
etc@etcpc /cygdrive/d/some $ readlink -f missing.txt # -f /cygdrive/d/some/missing.txt etc@etcpc /cygdrive/d/some $ readlink -fn missing.txt # -n は改行無し /cygdrive/d/some/missing.txt etc@etcpc /cygdrive/d/some $ echo $? 0 etc@etcpc /cygdrive/d/some $ readlink -en missing.txt # -eはファイルが存在しないとNULLが返る etc@etcpc /cygdrive/d/some $ echo $? 1 etc@etcpc /cygdrive/d/some $ readlink -e -n -v missing.txt # -vでエラーメッセージ readlink: missing.txt: No such file or directory etc@etcpc /cygdrive/d/some $ readlink -f ../missing.txt /cygdrive/d/missing.txt #相対パスを問答無用で解釈してくれる etc@etcpc /cygdrive/d/some $ readlink -f ../../../../../../../missing.txt /missing.txt #相対パスを御意見無用で解釈してくれる
リンクファイルだと、大元まで追いかけます。使い方によって、引数を選択する必要がありそうです。
もちろん、次の使い方もあり。
$ cygpath -w `readlink -f -n missing.txt` D:\some\missing.txt
*1:正準?正規?