فرمان غیر استاندارد خارجی readlink(1) میتواند برای نمایش مقصد لینک نمادین استفاده شود:
$ readlink /bin/sh bash
اگر شما برنامه readlink را ندارید، میتوانید از Perl استفاده کنید:
perl -e 'print readlink "/bin/sh", "\n"'
همچنین میتوانید دستور find -printf %l گنو را به کار ببرید، که مخصوصاً اگر به واکاوی گروهی پیوندها نیاز دارید، مفید است:
$ find /bin/ -type l -printf '%p points to %l\n' /bin/sh points to bash /bin/bunzip2 points to bzip2 ...
اگر سیستم شما فاقد هر دو برنامه readlink و Perl میباشد، میتوانید از چنین تابعی استفاده کنید:
# Bash readlink() { local path=$1 ll if [ -L "$path" ]; then ll=$(LC_ALL=C ls -l "$path" 2>/dev/null) && printf '%s\n' "${ll#* -> }" else return 1 fi }
گر چه، در صورتی که پیوند نمادین در نام خود شامل " -> " باشد، این تابع میتواند با شکست مواجه شود.
پرسش و پاسخ 29 (آخرین ویرایش 2011-04-16 04:04:51 توسط pool-72-81-225-126)