مستندات در این مورد مبهم است، اما میتوانید به نوعی با دستورات داخلی پوسته آن را انجام دهید:
# Bash if [[ ( -L $name ) && ( ! -e $name ) ]] then echo "$name is a dangling symlink" fi
صفحه man در Bash به شما میگوید که "-L" «اگر فایل موجود باشد و پیوند نمادین باشد» True را برمیگرداند، و "-e" «اگر فایل موجود باشد» True را باز میگرداند. آنچه میتواند روشن نباشد، آنست که "-L" ملاحظه میکند که فایل خودش لینک باشد. اما، برای "-e"، فایل مقصد لینک نمادین است(جایی که لینک به آن اشاره میکند). به این دلیل است که شما برای دیدن آنکه پیوند نمادین منفصل است، به هر دو بررسی نیاز دارید، "-L" خود لینک را بررسی میکند، و "-e" جایی که لینک به آن اشاره میکند را بررسی میکند.
POSIX به طور مشابهی دارای همین بررسیها میباشد، بنابراین اگر بنا به دلایلی شما نمیتوانید از فرمان(ارجح) [[ استفاده کنید، همان بررسی میتواند با استفاده ازفرمان قدیمیتر [ انجام بشود:
# POSIX if [ -L "$name" ] && [ ! -e "$name" ] then echo "$name is a dangling symlink" fi
پرسش و پاسخ 97 (آخرین ویرایش 2012-01-13 09:52:29 توسط ght)