وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

Bash Script برای دریافت Symlink Target

0 0
زمان لازم برای مطالعه: 3 دقیقه


همه ما با لینک های نمادین در لینوکس آشنا هستیم. پیوند نمادین که معمولاً به عنوان پیوندهای نمادین یا پیوندهای نرم شناخته می شود، یک فایل خاص است که به فایل یا دایرکتوری دیگری در هر فایل سیستمی اشاره می کند.

در این آموزش کوتاه، به اصول اولیه پیوندهای نمادین در لینوکس می پردازیم و یک لینک ساده ایجاد می کنیم bash اسکریپت برای به دست آوردن هدف پیوند نمادین.

انواع پیوندهای نمادین

عمدتاً دو نوع پیوند نمادین وجود دارد که عبارتند از:

لینک های سخت:

پیوندهای سخت نشانگر مستقیم یک فایل یا دایرکتوری در یک سیستم فایل هستند. لینک های سخت فقط در همان فایل سیستمی که فایل مورد نظر است ایجاد می شود.

لینک های نرم:

از سوی دیگر، لینک های نرم، میانبرهای غیرمستقیم یک فایل یا دایرکتوری هستند و می توانند در هر جایی از یک فایل سیستم وجود داشته باشند. پیوندهای نرم می توانند به فایل در یک سیستم فایل متفاوت اشاره کنند.

روش ایجاد پیوندهای نمادین

برای ایجاد یک لینک نمادین در لینوکس از دستور ln استفاده می کنیم. اجرای دستور بدون گزینه، یک پیوند سخت به فایل هدف مشخص شده ایجاد می کند.

دستور کلی دستور ln به صورت زیر است:

لوگاریتم [OPTIONS] <فایل هدف/فهرست راهنما> <مسیری به ارتباط دادن>

همانطور که گفته شد، دستور بالا یک لینک سخت به فایل هدف ایجاد می کند. برای ایجاد یک پیوند نمادین نرم، از گزینه -s به صورت زیر استفاده کنید:

لوگاریتم -s [OPTION] <فایل هدف/کارگردان> <مسیر نرم ارتباط دادن>

مثال شماره 1

اجازه دهید فایل auth.log را در /var/log بگیریم. ما می توانیم با استفاده از دستور زیر یک پیوند به فایل در فهرست اصلی خود ایجاد کنیم:

لوگاریتم -s /var/ورود به سیستم/auth.log auth.log

دستور بالا یک لینک به فایل اصلی ایجاد می کند. ما می توانیم این را با استفاده از دستور ls تأیید کنیم:

ls -لا

Bash Script برای دریافت Symlink Target

مثال شماره 2

همچنین می توانید عملیات مشابهی را انجام دهید روی یک دایرکتوری برای ایجاد پیوند به /var/log از دستور زیر استفاده می کنیم:

لوگاریتم -s /var/ورود به سیستم

به طور مشابه، یک پیوند نرم ایجاد می شود که به فهرست هدف /var/log اشاره می کند:

ls -لا

Bash Script برای دریافت Symlink TargetBash Script برای دریافت Symlink Target

روش حذف پیوندهای نمادین

برای حذف یک پیوند نمادین، از دستور unlink و سپس مسیر پیوند نمادین برای حذف استفاده می کنیم.

پیشنهاد می‌کنیم بخوانید:  تسلط بر حلقه های Bash "For": راهنمای گام به گام

مثلا:

لغو پیوند ~/ورود به سیستم

توجه داشته باشید: اگر فایل یا دایرکتوری مورد نظر را حذف کردید، پیوند نمادین را حذف کنید زیرا ترک آن باعث ایجاد یک پیوند شکسته می شود.

روش دریافت فایل یا دایرکتوری هدف پیوند نمادین

هر پیوند نمادین به یک فایل یا فهرست هدف اشاره می کند (مگر اینکه خراب باشد). برای واکشی فایل/دایرکتوری هدف یک پیوند نمادین، از این دستور استفاده می کنیم که هدف یک پیوند نمادین را نشان می دهد.

به عنوان مثال، برای به دست آوردن هدف فایل auth.log که در بخش قبلی ایجاد کردیم، می‌توانیم انجام دهیم:

لینک خواندن auth.log

/val/ورود به سیستم/auth.log

یک اسکریپت ساده Bash برای دریافت پیوندهای نمادین

با استفاده از مفاهیم بالا، می توانیم یک ساده را جمع آوری کنیم bash اسکریپتی که یک مسیر را می پذیرد و تمام پیوندهای نمادین و فایل ها یا دایرکتوری هدف آنها را فهرست می کند.

یک اسکریپت ساده مانند آنچه در زیر ارائه شده است باید این کار را انجام دهد.

#!/صندوقچه/bash
echo “دایرکتوری را برای ارزیابی ارائه دهید:”
خواندن target_dir
سی دی $target_dir
پیوندها=$(پیدا کردن . -maxdepth1 -نوع ل -ls | بیخیال ‘{print $11})
برای ارتباط دادن که در پیوندها
انجام دادن

echo پیوند $ -> $(لینک خواندن $link)
انجام شده

اسکریپت با درخواست از کاربر برای ارزیابی دایرکتوری شروع می شود. سپس اسکریپت به دایرکتوری ارائه شده می رود و تمام لینک های نمادین داخل دایرکتوری را پیدا می کند و خروجی را به awk می دهد.

Awk خروجی را تجزیه می کند و فقط پیوندهای نمادین را پیدا می کند و آنها را در متغیری به نام پیوندها ذخیره می کند.

پیشنهاد می‌کنیم بخوانید:  روش اشکال زدایی a bash اسکریپت؟

سپس یک حلقه ایجاد می کنیم که هر پیوند را در پیوندها می گیرد و مقدار هدف آنها را با استفاده از دستور readlink ارزیابی می کند.

بالاخره ما echo پیوند نمادین و دایرکتوری هدف. در زیر یک نمونه خروجی آورده شده است:

Bash Script برای دریافت Symlink TargetBash Script برای دریافت Symlink Target

در مثال بالا، ما تمام پیوندهای نمادین را در پوشه /etc پیدا می کنیم و print فایل یا دایرکتوری مورد نظر آنها

نتیجه

در این آموزش اصول استفاده از لینک های نمادین در لینوکس را مورد بحث قرار دادیم. سپس یک اسکریپت ساده ایجاد کردیم تا پیوندهای نمادین را در یک فهرست مشخص پیدا کنیم و منبع و هدف آنها را نشان دهیم.

با تشکر از شما برای خواندن!

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-30 20:47:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید