پاک کردن لینک ها در یونیکس

لینک(Link) ها در سیستم عامل های یونیکسی همان Short Cut ها در ویندوز هستند. دو نوع لینک نرم (Soft) و سخت (Hard) وجود دارد که لینک های نرم به Symbolic هم نامیده می شوند. در این اموزش با چگونگی ایجاد لینک ها آشنا شدید. نکته ای که درباره لینک های سخت وجود داره این هست که نمی توان یک لینک سخت رو برای دایرکتوری ها ایجاد کرد بلکه باید حتمن یک لینک نرم را روی دایرکتوری ایجاد نمود. با دو دستور rm و unlink می توان یک لینک را حذف کرد. دستور rm می تواند هر فایلی را حتی فایل های لینک ها Symbolic ها را پاک کند. (دقت کنید که همه چیز در یونیکس ها فایل هستند). دستور دیگر unlink است که عکس دستور ln است. دستور ln برای ایجاد یک لینک استفاده می شود ولی دستور unlink لینکی که ایجاد شده است را پاک می کند.

شکل کلی استفاده از هر دو دستور بصورت زیر است.

rm linkname
unlink linkname

در مثال زیر با خط اول به دایرکتوری tmp/ می رویم و سپس با دستور دوم یک لینک(سخت یا نرم) از فایل etc/passwd/ می سازیم و در نهایت با دستور unlink آنرا پاک می کنیم.

cd  /tmp

ln   -s  /etc/passwd  passwd.ln

rm  passwd.ln   OR  unlink  passwd.ln

در مثال زیر اول یک دایرکتوری به نام dir می سازیم و سپس یک لینک نرم ( لینک سخت برای دایرکتوری ها معنی ندارد) می سازیم و با دستور rm یا unlink آنرا پاک می کنیم.

mkdir  dir

ln  -s  dir  dir.ln

rm  dir.ln  OR  unlink  dir.ln

استفاده از دستور cleanlink :

این دستور لینوکس برای پاک کردن لینک ها و دایرکتوری های خالی( بدون محتوا) یا Empty در دایرکتوری جاری استفاده می شود. فرض کنید در دایرکتوری tmp/ هستید و می خواهید تمامی داریکتوری ها و لینک های خالی درون این دایرکتوری را بصورت سلسله مراتبی پاک کنید. این دستور برای شما این کار را انجام می دهد. تنها کاری که باید انجام بدهید این است که با دستور cd به دایرکتوری دلخواه بروید و سپس این دستور cleanlink را بدون هیچ پارامتری اجرا کنید.

cleanlink

نکته این این است که،این دستور فقط دایرکتوری ها و لینک های خالی درون دایرکتوری جاری را پاک می کند(حذف می کند). برای تست با دستور های زیر دو دایرکتوری به نام های dir1 و dir2 بسازید و سپس با دستور touch یک فایل درون ذایرکتوری dir1 بسازید و درون آنرا پر کنید ( هم درون دایرکتوری و هم درون فایل محتوا وجود دارد) و سپس یک فایل درون دایرکتوری tmp/ بسازید.

cd  /tmp

mkdir  dir1 dir2

cd dir1

touch file1

cd /tmp

touch file2

سپس با دستور های زیر لینک ها را بسازید.

cd  /tmp

ln  -s  dir1  dir1.ln

ln  -s  dir2  dir2.ln

ln  -s  file2  file2.ln

اگر در دایرکتوری tmp/ باشید و دستور ls  -lh را اجرا کنید باید دایرکتوری ها و لینک های آنها را ببنید. پس از اجرای دستور cleanlink باید دایرکتوری dir2 پاک شود ولی dir1 چون خالی نیست و دارای محتوی هست باقی می مانند.

نکته دیگر اینکه این دستور فقط و فقط برای دایرکتوری های خالی و لینک هایی که به آنها داده شده است کار می کند و در مورد فایل های خالی و لینک های مرتبط به آنها کاربردی ندارد.