それが指しているリンクの絶対パスを取得することは可能ですか? 簡単なシステムコマンドはありますか?
次のすべての OS が必要 HP-UX 11i、1123u、1123i AIX 5.2 および 5.3 Suse Linux 10 Solaris 10
言語を指定しなかったので、使用しているシェルで実行できるコマンドが必要だと思います。このls
コマンドには-l
、ファイルに関する多くの情報を出力する(つまり、ell)オプションがあります。情報の最後のビットはフルパスなので、次のように言うことができるはずです
ls -l file | awk '{print $NF}'
SUS2準拠のマシン(すべての商用UNIXである必要があります)。ただし、ファイルまたはファイルにつながるディレクトリのいずれかにスペースがある場合、これには問題があります。
システム コールを探している場合は、readlink(2)
. これは標準化されているため、すべての POSIX 準拠システムで利用できるはずです。
以下は、以前に提供されたリンクから取得した使用例です。
#include <unistd.h>
char buf[1024];
ssizet_t len;
if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1)
buf[len] = '\0';
コマンド ライン ユーティリティを探している場合、標準化されているものはないように見えますが、GNU (Linux) とBSDの両方にreadlink(1)
.