از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Bash Script برای دریافت Symlink Target
سرفصلهای مطلب
همه ما با لینک های نمادین در لینوکس آشنا هستیم. پیوند نمادین که معمولاً به عنوان پیوندهای نمادین یا پیوندهای نرم شناخته می شود، یک فایل خاص است که به فایل یا دایرکتوری دیگری در هر فایل سیستمی اشاره می کند.
در این آموزش کوتاه، به اصول اولیه پیوندهای نمادین در لینوکس می پردازیم و یک لینک ساده ایجاد می کنیم bash اسکریپت برای به دست آوردن هدف پیوند نمادین.
انواع پیوندهای نمادین
عمدتاً دو نوع پیوند نمادین وجود دارد که عبارتند از:
لینک های سخت:
پیوندهای سخت نشانگر مستقیم یک فایل یا دایرکتوری در یک سیستم فایل هستند. لینک های سخت فقط در همان فایل سیستمی که فایل مورد نظر است ایجاد می شود.
لینک های نرم:
از سوی دیگر، لینک های نرم، میانبرهای غیرمستقیم یک فایل یا دایرکتوری هستند و می توانند در هر جایی از یک فایل سیستم وجود داشته باشند. پیوندهای نرم می توانند به فایل در یک سیستم فایل متفاوت اشاره کنند.
روش ایجاد پیوندهای نمادین
برای ایجاد یک لینک نمادین در لینوکس از دستور ln استفاده می کنیم. اجرای دستور بدون گزینه، یک پیوند سخت به فایل هدف مشخص شده ایجاد می کند.
دستور کلی دستور ln به صورت زیر است:
همانطور که گفته شد، دستور بالا یک لینک سخت به فایل هدف ایجاد می کند. برای ایجاد یک پیوند نمادین نرم، از گزینه -s به صورت زیر استفاده کنید:
مثال شماره 1
اجازه دهید فایل auth.log را در /var/log بگیریم. ما می توانیم با استفاده از دستور زیر یک پیوند به فایل در فهرست اصلی خود ایجاد کنیم:
دستور بالا یک لینک به فایل اصلی ایجاد می کند. ما می توانیم این را با استفاده از دستور ls تأیید کنیم:
مثال شماره 2
همچنین می توانید عملیات مشابهی را انجام دهید روی یک دایرکتوری برای ایجاد پیوند به /var/log از دستور زیر استفاده می کنیم:
به طور مشابه، یک پیوند نرم ایجاد می شود که به فهرست هدف /var/log اشاره می کند:
روش حذف پیوندهای نمادین
برای حذف یک پیوند نمادین، از دستور unlink و سپس مسیر پیوند نمادین برای حذف استفاده می کنیم.
مثلا:
توجه داشته باشید: اگر فایل یا دایرکتوری مورد نظر را حذف کردید، پیوند نمادین را حذف کنید زیرا ترک آن باعث ایجاد یک پیوند شکسته می شود.
روش دریافت فایل یا دایرکتوری هدف پیوند نمادین
هر پیوند نمادین به یک فایل یا فهرست هدف اشاره می کند (مگر اینکه خراب باشد). برای واکشی فایل/دایرکتوری هدف یک پیوند نمادین، از این دستور استفاده می کنیم که هدف یک پیوند نمادین را نشان می دهد.
به عنوان مثال، برای به دست آوردن هدف فایل auth.log که در بخش قبلی ایجاد کردیم، میتوانیم انجام دهیم:
/val/ورود به سیستم/auth.log
یک اسکریپت ساده Bash برای دریافت پیوندهای نمادین
با استفاده از مفاهیم بالا، می توانیم یک ساده را جمع آوری کنیم bash اسکریپتی که یک مسیر را می پذیرد و تمام پیوندهای نمادین و فایل ها یا دایرکتوری هدف آنها را فهرست می کند.
یک اسکریپت ساده مانند آنچه در زیر ارائه شده است باید این کار را انجام دهد.
echo “دایرکتوری را برای ارزیابی ارائه دهید:”
خواندن target_dir
سی دی $target_dir
پیوندها=$(پیدا کردن . -maxdepth1 -نوع ل -ls | بیخیال ‘{print $11})
برای ارتباط دادن که در پیوندها
انجام دادن
echo “پیوند $ -> $(لینک خواندن $link)“
انجام شده
اسکریپت با درخواست از کاربر برای ارزیابی دایرکتوری شروع می شود. سپس اسکریپت به دایرکتوری ارائه شده می رود و تمام لینک های نمادین داخل دایرکتوری را پیدا می کند و خروجی را به awk می دهد.
Awk خروجی را تجزیه می کند و فقط پیوندهای نمادین را پیدا می کند و آنها را در متغیری به نام پیوندها ذخیره می کند.
سپس یک حلقه ایجاد می کنیم که هر پیوند را در پیوندها می گیرد و مقدار هدف آنها را با استفاده از دستور readlink ارزیابی می کند.
بالاخره ما echo پیوند نمادین و دایرکتوری هدف. در زیر یک نمونه خروجی آورده شده است:
در مثال بالا، ما تمام پیوندهای نمادین را در پوشه /etc پیدا می کنیم و print فایل یا دایرکتوری مورد نظر آنها
نتیجه
در این آموزش اصول استفاده از لینک های نمادین در لینوکس را مورد بحث قرار دادیم. سپس یک اسکریپت ساده ایجاد کردیم تا پیوندهای نمادین را در یک فهرست مشخص پیدا کنیم و منبع و هدف آنها را نشان دهیم.
با تشکر از شما برای خواندن!
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 20:47:03