انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: دستور which در readlink [حل شد]  (دفعات بازدید: 390 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین masoudk

  • Sr. Member
  • *
  • ارسال: 334
  • جنسیت : پسر
  • I love my loneliness
دستور which در readlink [حل شد]
« : 31 تیر 1398، 12:01 ب‌ظ »
سلام
من وقتی این دستور رو مینویسم:
which java
خروجی میشه این:
/usr/bin/java
ولی وقتی از این دستور تو readlink استفاده میکنم:
sudo readlink -f $(which java)
خروجی میشه این:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
سوالم اینجاست که $() به صورت عمومی برای چی استفاده میشه و پشت پرده چه اتفاقاتی می افته که از آدرس اول به آدرس دوم میرسیم.
مرسی
« آخرین ویرایش: 31 تیر 1398، 02:08 ب‌ظ توسط masoudk »
contact masoudk1990@yahoo.com

آفلاین M!lad

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1757
پاسخ : دستور which در readlink
« پاسخ #1 : 31 تیر 1398، 01:16 ب‌ظ »
()$ استفاده می‌شه برای نگارش یک Command Substitution.

در Command Substitution، قبل از اجرای دستور اصلی (در مثال شما readlink) دستوری که درون ()$ قرار گرفته اجرا و خروجیش به عنوان یک پارامتر در مقابل دستور readlink قرار میگیره. و نهایتا دستور readlink با اون پارامتر اجرا میشه.

یعنی چیزی که نهایتا اجرا خواهد شد:

readlink -f /usr/bin/java
هست و readlink آدرس

/usr/bin/java
که یک لینک هست رو دنبال میکنه و فایل اصلی که بهش اشاره می‌کنه رو بر میگردونه.

برای مطالعه بیشتر:

http://www.tldp.org/LDP/abs/html/commandsub.html
و این تنها اتفاقی نیست که قبل از اجرای دستور رخ میده تعدادی expansion دیگر هم وجود داره:

    brace expansion
    tilde expansion
    parameter and variable expansion
    command substitution
    arithmetic expansion
    word splitting
    filename expansion

برای مثال Process Substitution:

ls  <(echo)
/dev/fd/63
« آخرین ویرایش: 31 تیر 1398، 01:34 ب‌ظ توسط M!lad »
..I feel no fault for the fault I feel..

آفلاین masoudk

  • Sr. Member
  • *
  • ارسال: 334
  • جنسیت : پسر
  • I love my loneliness
پاسخ : دستور which در readlink
« پاسخ #2 : 31 تیر 1398، 02:07 ب‌ظ »
ممنونم
contact masoudk1990@yahoo.com