یک اسکریپت Bash بنویس که همهٔ فایل‌های داخل یک پوشهٔ مبدا را به صورت لینک سمبولیک در پوشهٔ مقصد ایجاد کند، نام فایل‌ها حفظ شود و اگر لینک از قبل وجود داشت آن را بازنشانی کند.

4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:00

0.0

برای حل این مسئله از فرمان ln -s برای ساختن لینک سمبولیک و دستورات کمکی مثل mkdir -p برای ایجاد پوشهٔ مقصد، basename برای استخراج نام فایل و test/readlink -f برای گرفتن مسیر کامل استفاده کن. در اسکریپت آرگومان‌های مبدا و مقصد را بگیر، با یک حلقه همهٔ فایل‌های عادی را پردازش کن، قبل از ساخت لینک اگر فایل یا لینک موجود بود با rm -f آن را حذف کن و سپس ln -s را اجرا کن؛ در ضمن خطاها (مثل وجود نداشتن پوشهٔ مبدا) را بررسی و پیام مناسب چاپ کن. نکته: استفاده از مسیر مطلق برای لینک‌ها و مدیریت مجوزها و فیلتر کردن فقط فایل‌ها (نه دایرکتوری‌ها) کمک می‌کند خروجی صحیح‌تری داشته باشی.

توسط پژوهشگر در 220 روز قبل ساعت 02:00
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arman در 220 روز قبل ساعت 11:15

برای پایداری اسکریپت از set -euo pipefail استفاده کن و با find -type f ضمن فیلتر کردن فقط فایل‌ها، هر فایل را آمادهٔ لینک‌سازی کن. نام هر فایل را با basename بگیر و لینک را در مسیر مطلق به پوشهٔ مقصد با همان نام بساز، مثلاً از mkdir -p استفاده کن تا پوشه وجود داشته باشد و سپس rm -f و بعد ln -s انجام بده. استفاده از readlink -f یا realpath برای به‌دست آوردن مسیر مطلق مبدا و همچنین لینک‌دهی با مسیر مطلق خروجی را پایدار می‌کند. از نظر طراحی، مراقب وجود فضاها و کاراکترهای خاص در نام‌ها باش و ورودی‌ها را با quoting مناسب مدیریت کن.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری