پرسش و پاسخ شماره ۲۹ - آموزش اسکریپت نویسی
X
تبلیغات
رایتل

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

#!/bin/bash

پرسش و پاسخ شماره ۲۹

پرسش و پاسخ شماره ۲۹

به چه طریق می‌توانم مقصد یک پیوند نمادین را نمایش بدهم؟

فرمان غیر استاندارد خارجی ‎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
}

گر چه، در صورتی که پیوند نمادین در نام خود شامل ‎" -> "‎ باشد، این تابع می‌تواند با شکست مواجه شود.


CategoryShell

پرسش و پاسخ 29 (آخرین ویرایش ‎ 2011-04-16 04:04:51 ‎ توسط pool-72-81-225-126)