حذف فایل در لینوکس از طریق ترمینال — راهنمای کاربردی
برای حذف فایل در لینوکس روشها و دستورات مختلفی وجود دارد. دستورهای rm و rmdir به ترتیب برای حذف فایل و دایرکتوریهای لینوکس، macOS و دیگر سیستمهای عامل شبه یونیکس استفاده میشوند. این دستورها مشابه دستورهای del و deltree در ویندوز و DOS هستند. دستورهای حذف فایل و دایرکتوری بسیار قدرتمند هستند و چندین گزینه مختلف دارند.
لازم به ذکر است که فایلها و دایرکتوریهایی که با استفاده از دستورهای rm و rmdir پاک میشوند به سطل زباله انتقال نمییابند. این موارد بیدرنگ از روی رایانه حذف میشوند. اگر به صورت تصادفی فایلها را با استفاده از این دستورها حذف کنید، تنها راه برای بازیابی آنها از طریق نسخه پشتیبان خواهد بود.
حذف فایل در لینوکس با دستور rm
سادهترین روش برای حذف کردن یک فایل منفرد در دایرکتوری جاری استفاده از دستور rm است.
بدین منظور عبارت rm و سپس یک فاصله و در ادامه نام فایلی که میخواهید حذف کنید را بنویسید:
rm file_1.txt
اگر فایل در دایرکتوری جاری نباشد، میتوانید مکان آن را تعیین کنید:
rm./path/to/the/file/file_1.txt
امکان درج نام بیش از یک فایل در دستور rm وجود دارد. بدین ترتیب همه فایلهای ذکر شده حذف خواهند شد.
rm file_2.txt file_3.txt
با استفاده از کاراکترهای «وایلدکارد» (Wildcards) میتوان گروهی از فایلها را به صورت جمعی حذف کرد. در این روش کاراکتر * نشاندهنده وجود چندین کاراکتر در نام فایل و ? نشاندهنده وجود یک کاراکتر منفرد (هر کاراکتری) است. برای نمونه دستور زیر همه فایلهای تصویر png را در دایرکتوری کاری فعلی پاک میکند:
rm *.png
دستور زیر همه فایلهایی را که پسوند آنها تکحرفی است حذف میکند. برای مثال این دستور میتواند فایلهایی به صورت File.1 و File.2 را حذف کند؛ اما فایل F.12 پاک نخواهد شد.
rm *.?
اگر فایلی به صورت «غیر قابل نوشتن» (write-protected) تنظیم شده باشد، قبل از حذف کردن فایل هشداری نمایش مییابد. در این موارد باید با وارد کردن حرف y یا n که به ترتیب نشاندهنده موافقت یا مخالفت شما با حذف فایل است، نظرتان را اعلام کرده و کلید Enter را بزنید.
برای کاستن از ریسک استفاده از دستور rm به همراه کاراکترهای وایلدکارد میتوانید از گزینه i- به معنی «تعاملی» (Interactive) استفاده کنید. به این ترتیب حذف تکتک فایلها به تأیید شما نیاز خواهد داشت:
rm -i *.dat
گزینه f- که اختصاری برای عبارت «اجباری» (force) است، معکوس گزینه تعاملی که در بخش فوق اشاره کردیم، عمل میکند. این گزینه حتی در صورتی که فایلهای به صوت غیر نوشتنی تنظیم شده باشند، هشداری نمایش نخواهد داد.
rm -f filename
حذف دایرکتوریها در لینوکس با دستور rm
برای حذف یک دایرکتوری خالی، باید از گزینه d- که اختصاری برای عبارت «دایرکتوری» (directory) است، استفاده کنید. امکان بهرهگیری از کاراکترهای وایلدکارد (* و ?) در نامهای دایرکتوریها همانند روشی که در مورد نامهای فایلها اشاره کردیم، نیز وجود دارد.
rm -d directory
برای حذف کردن بیش از یک دایرکتوری، میتوانید نام هر چند دایرکتوری که میخواهید حذف شوند را به صورت پشت سرهم وارد کنید.
rm -d directory1 directory2 /path/to/directory3
برای حذف دایرکتوریهایی که خالی نیستند، باید از گزینه r- به معنی «بازگشتی» (recursive) استفاده کنید. این گزینه دایرکتوریها و همه فایلها و دایرکتوریهای فرعی داخل آن را پاک میکند.
rm -r directory1 directory2 directory3
فایل یا دایرکتوری غیر نوشتنی
اگر یک دایرکتوری یا یک فایل به صورت «غیر نوشتنی» تنظیم شده باشد، در مورد تأیید حذف آنها از شما سؤال پرسیده میشود. برای حذف دایرکتوریهایی که خالی نیستند و عدم نمایش این اعلان هشدار، میتوانید از گزینههای r- و f- به صورت همزمان استفاده کنید.
rm -rf directory
در مورد استفاده از دستور فوق کاملاً باید هوشیار باشید. اگر در هنگام استفاده از دستور rm –rf اشتباهی مرتکب شوید، ممکن است دادهها به کلی از دست بروند و یا سیستم از کار بیفتد. این دستور خطرناکی است و بهترین تدبیر این است که کاملاً هوشیارانه از آن استفاده کنید. برای این که درکی از ساختار دایرکتوری و فایلهایی که به وسیله دستور rm -rf حذف خواهند شد، به دست بیاورید، از دستور tree استفاده کنید.
اگر tree روی سیستم شما نصب نیست، میتوانید از apt-get برای نصب این پکیج روی سیستمهای اوبونتو یا مبتنی بر دبیان استفاده کنید. روی دیگر توزیعهای لینوکس نیز میتوانید از ابزارهای مدیریت بسته مربوطه استفاده کنید.
sudo apt-get install tree
اجرای دستور tree یک نمودار ساده فهم از ساختار دایرکتوریها و فایلهای درون آن دایرکتوریها ارائه میکند:
tree
همچنان میتوان یک مسیر برای این دستور تعیین کرد تا این درخت از مبدأ دایرکتوری دیگری روی فایلسیستم ترسیم شود.
tree path/to/directory
دستور rm گزینههایی به صورت one-file-system ،--no-preserve-root ،--preserve-root-- نیز دارد؛ اما استفاده از این گزینهها صرفاً به کاربران حرفهایتر توصیه میشود، چون اگر هر گونه اشتباهی مرتکب شوید، ممکن است همه فایلهای سیستم را پاک کنید. برای کسب اطلاعات بیشتر در این خصوص به صفحه راهنما (+) مراجعه کنید.
حذف دایرکتوریها در ترمینال لینوکس با دستور rmdir
دستور دیگری به نام rmdir نیز وجود دارد که با استفاده از آن میتوان دایرکتوریها را حذف کرد. تفاوت بین rm و rmdir این است که rmdir تنها میتواند آن دایرکتوریهایی را حذف کند که خالی هستند. این دستور هرگز فایلها را پاک نمیکند.
سادهترین استفاده از دستور rmdir برای حذف یک دایرکتوری منفرد است. همانند دستور rm میتوانید نام چنین دایرکتوری را به rmdir بدهید یا این که مسیر دایرکتوری را وارد کنید.
با ارسال نام دایرکتوری به دستور rmdir میتوانید یک دایرکتوری خالی را در مسیر جاری حذف کنید:
rmdir directory
امکان حذف چندین دایرکتوری با ارسال فهرستی از نامها به دستور rmdir وجود دارد:
rmdir directory1 directory2 directory3
یک دایرکتوری را که در دایرکتوری جاری قرار ندارد با تعیین مسیر کامل آن میتوانید حذف کنید:
rmdir /path/to/directory
اگر تلاش کنید پوشهای را که خالی نیست حذف کنید، rmdir پیام خطایی نمایش میدهد. در مثال زیر rmdir با موفقیت و بدون نمایش خطا دایرکتوری clients را حذف میکند؛ اما امکان حذف دایرکتوری Projects وجود ندارد ، چون شامل چندین فایل است. دایرکتوری Projects دقیقاً همچنان که بود باقی میماند و فایلهای درون آن دستنخورده میمانند.
حذف دایرکتوریهای خالی
زمانی که rmdir یک خطای «Directory not empty» نمایش میدهد، پردازش دایرکتوریهایی که به خط فرمان ارسال شدهاند متوقف میشود. اگر شما از این دستور خواسته باشید که چهار دایرکتوری را حذف کند و دایرکتوری اول شامل فایلهایی باشد، یک پیام خطا نمایش مییابد و کار دیگری صورت نمیگیرد. البته امکان الزام به نادیده گرفتن خطاها با استفاده از گزینه ignore-fail-on-non-empty-- وجود دارد و بدین ترتیب دایرکتوریهای دیگر نیز پردازش (حذف) میشوند.
در مثال زیر، دو پوشه به rmdir ارسال شدهاند که work/reports و work/quotes نام دارند. گزینه ignore-fail-on-non-empty-- نیز در دستور گنجانده شده است. پوشه فایلهایی در درون خود دارد و از این رو rmdir نمیتواند آن را حذف کند. گزینه ignore-fail-on-non-empty-- دستور rmdir را الزام میکند که خطا را نادیده گرفته و به پوشه بعدی یعنی work/quotes رفته و آن را پردازش کند. این یک پوشه خالی است و rmdir آن را حذف میکند.
دستوری که استفاده شده به صورت زیر است:
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
شما میتوانید از گزینه (پارامتر) p– برای حذف یک دایرکتوری و همچنین حذف دایرکتوریهای والد آن استفاده کنید. دلیل کارکرد صحیح این ترفند آن است که rmdir با دایرکتوری مقصد شروع به کار میکند و سپس به سمت دایرکتوریهای والد حرکت میکند. در این مرحله آن دایرکتوری خالی است و از این رو میتواند به وسیله rmdir حذف شود و این فرایند با حرکت به سمت بالا در سلسلهمراتب دایرکتوریهایی که به دستور rmdir ارسال شدهاند تداوم مییابد.
حذف دایرکتوری والد
در مثال زیر، دستوری که به rmdir ارسال میشود چنین بوده است:
rmdir -p work/invoices
در این دستور هر دو دایرکتوری invoices و work چنان که درخواست شده است، حذف میشوند. چه از Bash یا هر پوسته دیگری استفاده کنید، لینوکس دستورهای قدرتمند و انعطافپذیری برای حذف دایرکتوریها و فایلها از خط فرمان ارائه میکند. برخی افراد ممکن است تمایل داشته باشند تا کار با ترمینال و دستورهای آن را بیشتر و بهتر یاد بگیرند، برخی دیگر احتمال دارد با سیستمهایی سر و کار داشته باشند که فاقد رابط کاربری گرافیکی باشند و یا به صورت ریموت با سروری در ارتباط باشند که فقط میتوانند آن را از طریق ترمینال مدیریت کنند. توضیحاتی که در بالا آمده و دستوراتی که شرح داده شدهاند، برای کلیه این افراد مفید و کاربردی هستند.
در هر حال، با وجود هر گردش کاری که ترجیح میدهید استفاده کنید، این دستورها همه جا در اسکریپتهای شل حضور دارند. اگر یک اسکریپت به وسیله یک cron job اجرا شود، میتواند وظایف روزمره نگهداری از سیستم مانند حذف فایلهای لاگ بیاستفاده را بر عهده بگیرد. اگر چنین کاربردی را میخواهید پیادهسازی کنید، به بهره گرفتن از این دستورهای ترمینال نیاز خواهید داشت و در چنین حالتی باید همه چیز را به دقت تست کنید و همواره یک نسخه پشتیبان بهروز داشته باشید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای سیستم عامل لینوکس
- گنجینه آموزشهای لینوکس (Linux)
- مجموعه آموزشهای مهارتهای کاربردی کامپیوتر (ICDL)
- آموزش ترمینال لینوکس — راهنمای شروع به کار
- دستورات محیط ترمینال MAC و Linux
==