برای حذف فایل در لینوکس روش‌ها و دستورات مختلفی وجود دارد. دستورهای rm و rmdir به ترتیب برای حذف فایل و دایرکتوری‌های لینوکس، macOS و دیگر سیستم‌های عامل شبه یونیکس استفاده می‌شوند. این دستورها مشابه دستورهای del و deltree در ویندوز و DOS هستند. دستورهای حذف فایل و دایرکتوری بسیار قدرتمند هستند و چندین گزینه مختلف دارند.

لازم به ذکر است که فایل‌ها و دایرکتوری‌هایی که با استفاده از دستورهای rm و rmdir پاک می‌شوند به سطل زباله انتقال نمی‌یابند. این موارد بی‌درنگ از روی رایانه حذف می‌شوند. اگر به صورت تصادفی فایل‌ها را با استفاده از این دستورها حذف کنید، تنها راه برای بازیابی آن‌ها از طریق نسخه پشتیبان خواهد بود.

حذف فایل در لینوکس با دستور rm

ساده‌ترین روش برای حذف کردن یک فایل منفرد در دایرکتوری جاری استفاده از دستور rm است. بدین منظور عبارت rm و سپس یک فاصله و در ادامه نام فایلی که می‌خواهید حذف کنید را بنویسید:

اگر فایل در دایرکتوری جاری نباشد، می‌توانید مکان آن را تعیین کنید:

امکان درج نام بیش از یک فایل در دستور rm وجود دارد. بدین ترتیب همه فایل‌های ذکر شده حذف خواهند شد.

با استفاده از کاراکترهای «وایلدکارد» (Wildcards) می‌توان گروهی از فایل‌ها را به صورت جمعی حذف کرد. در این روش کاراکتر * نشان‌دهنده وجود چندین کاراکتر در نام فایل و ? نشان‌دهنده وجود یک کاراکتر منفرد (هر کاراکتری) است. برای نمونه دستور زیر همه فایل‌های تصویر png را در دایرکتوری کاری فعلی پاک می‌کند:

دستور زیر همه فایل‌هایی را که پسوند آن‌ها تک‌حرفی است حذف می‌کند. برای مثال این دستور می‌تواند فایل‌هایی به صورت File.1 و File.2 را حذف کند؛ اما فایل F.12 پاک نخواهد شد.

اگر فایلی به صورت «غیر قابل نوشتن» (write-protected) تنظیم شده باشد، قبل از حذف کردن فایل هشداری نمایش می‌یابد. در این موارد باید با وارد کردن حرف y یا n که به ترتیب نشان‌دهنده موافقت یا مخالفت شما با حذف فایل است، نظرتان را اعلام کرده و کلید Enter را بزنید.

حذف فایل

برای کاستن از ریسک استفاده از دستور rm به همراه کاراکترهای وایلدکارد می‌توانید از گزینه i- به معنی «تعاملی» (Interactive) استفاده کنید. به این ترتیب حذف تک‌تک فایل‌ها به تأیید شما نیاز خواهد داشت:

حذف فایل

گزینه f- که اختصاری برای عبارت «اجباری» (force) است، معکوس گزینه تعاملی که در بخش فوق اشاره کردیم، عمل می‌کند. این گزینه حتی در صورتی که فایل‌های به صوت غیر نوشتنی تنظیم شده باشند، هشداری نمایش نخواهد داد.

حذف دایرکتوری‌ها در لینوکس با دستور rm

برای حذف یک دایرکتوری خالی، باید از گزینه d- که اختصاری برای عبارت «دایرکتوری» (directory) است، استفاده کنید. امکان بهره‌گیری از کاراکترهای وایلدکارد (* و ?) در نام‌های دایرکتوری‌ها همانند روشی که در مورد نام‌های فایل‌ها اشاره کردیم، نیز وجود دارد.

برای حذف کردن بیش از یک دایرکتوری، می‌توانید نام هر چند دایرکتوری که می‌خواهید حذف شوند را به صورت پشت سرهم وارد کنید.

برای حذف دایرکتوری‌هایی که خالی نیستند، باید از گزینه r- به معنی «بازگشتی» (recursive) استفاده کنید. این گزینه دایرکتوری‌ها و همه فایل‌ها و دایرکتوری‌های فرعی داخل آن را پاک می‌کند.

فایل یا دایرکتوری غیر نوشتنی

اگر یک دایرکتوری یا یک فایل به صورت «غیر نوشتنی» تنظیم شده باشد، در مورد تأیید حذف آن‌ها از شما سؤال پرسیده می‌شود. برای حذف دایرکتوری‌هایی که خالی نیستند و عدم نمایش این اعلان هشدار، می‌توانید از گزینه‌های r- و f- به صورت همزمان استفاده کنید.

در مورد استفاده از دستور فوق کاملاً باید هوشیار باشید. اگر در هنگام استفاده از دستور rm –rf اشتباهی مرتکب شوید، ممکن است داده‌ها به کلی از دست بروند و یا سیستم از کار بیفتد. این دستور خطرناکی است و بهترین تدبیر این است که کاملاً هوشیارانه از آن استفاده کنید. برای این که درکی از ساختار دایرکتوری و فایل‌هایی که به وسیله دستور rm -rf حذف خواهند شد، به دست بیاورید، از دستور tree استفاده کنید.

اگر tree روی سیستم شما نصب نیست، می‌توانید از apt-get برای نصب این پکیج روی سیستم‌های اوبونتو یا مبتنی بر دبیان استفاده کنید. روی دیگر توزیع‌های لینوکس نیز می‌توانید از ابزارهای مدیریت بسته مربوطه استفاده کنید.

اجرای دستور tree یک نمودار ساده فهم از ساختار دایرکتوری‌ها و فایل‌های درون آن دایرکتوری‌ها ارائه می‌کند:

حذف فایل

همچنان می‌توان یک مسیر برای این دستور تعیین کرد تا این درخت از مبدأ دایرکتوری دیگری روی فایل‌سیستم ترسیم شود.

دستور rm گزینه‌هایی به صورت one-file-system ،–no-preserve-root ،–preserve-root– نیز دارد؛ اما استفاده از این گزینه‌ها صرفاً به کاربران حرفه‌ای‌تر توصیه می‌شود، چون اگر هر گونه اشتباهی مرتکب شوید، ممکن است همه فایل‌های سیستم را پاک کنید. برای کسب اطلاعات بیشتر در این خصوص به صفحه راهنما (+) مراجعه کنید.

حذف دایرکتوری‌ها در ترمینال لینوکس با دستور rmdir

دستور دیگری به نام rmdir نیز وجود دارد که با استفاده از آن می‌توان دایرکتوری‌ها را حذف کرد. تفاوت بین rm و rmdir این است که rmdir تنها می‌تواند آن دایرکتوری‌هایی را حذف کند که خالی هستند. این دستور هرگز فایل‌ها را پاک نمی‌کند.

ساده‌ترین استفاده از دستور rmdir برای حذف یک دایرکتوری منفرد است. همانند دستور rm می‌توانید نام چنین دایرکتوری را به rmdir بدهید یا این که مسیر دایرکتوری را وارد کنید.

با ارسال نام دایرکتوری به دستور rmdir می‌توانید یک دایرکتوری خالی را در مسیر جاری حذف کنید:

امکان حذف چندین دایرکتوری با ارسال فهرستی از نام‌ها به دستور rmdir وجود دارد:

یک دایرکتوری را که در دایرکتوری جاری قرار ندارد با تعیین مسیر کامل آن می‌توانید حذف کنید:

اگر تلاش کنید پوشه‌ای را که خالی نیست حذف کنید، 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 آن را حذف می‌کند.

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

حذف فایل

شما می‌توانید از گزینه (پارامتر) p– برای حذف یک دایرکتوری و همچنین حذف دایرکتوری‌های والد آن استفاده کنید. دلیل کارکرد صحیح این ترفند آن است که rmdir با دایرکتوری مقصد شروع به کار می‌کند و سپس به سمت دایرکتوری‌های والد حرکت می‌کند. در این مرحله آن دایرکتوری خالی است و از این رو می‌تواند به وسیله rmdir حذف شود و این فرایند با حرکت به سمت بالا در سلسله‌مراتب دایرکتوری‌هایی که به دستور rmdir ارسال شده‌اند تداوم می‌یابد.

حذف دایرکتوری والد

در مثال زیر، دستوری که به rmdir ارسال می‌شود چنین بوده است:

حذف فایل

در این دستور هر دو دایرکتوری invoices و work چنان که درخواست شده است، حذف می‌شوند. چه از Bash یا هر پوسته دیگری استفاده کنید، لینوکس دستورهای قدرتمند و انعطاف‌پذیری برای حذف دایرکتوری‌ها و فایل‌ها از خط فرمان ارائه می‌کند. برخی افراد ممکن است تمایل داشته باشند تا کار با ترمینال و دستورهای آن را بیشتر و بهتر یاد بگیرند، برخی دیگر احتمال دارد با سیستم‌هایی سر و کار داشته باشند که فاقد رابط کاربری گرافیکی باشند و یا به صورت ریموت با سروری در ارتباط باشند که فقط می‌توانند آن را از طریق ترمینال مدیریت کنند. توضیحاتی که در بالا آمده و دستوراتی که شرح داده شده‌اند، برای کلیه این افراد مفید و کاربردی هستند.

در هر حال، با وجود هر گردش کاری که ترجیح می‌دهید استفاده کنید، این دستورها همه جا در اسکریپت‌های شل حضور دارند. اگر یک اسکریپت به وسیله یک cron job اجرا شود، می‌تواند وظایف روزمره نگهداری از سیستم مانند حذف فایل‌های لاگ بی‌استفاده را بر عهده بگیرد. اگر چنین کاربردی را می‌خواهید پیاده‌سازی کنید، به بهره گرفتن از این دستورهای ترمینال نیاز خواهید داشت و در چنین حالتی باید همه چیز را به دقت تست کنید و همواره یک نسخه پشتیبان به‌روز داشته باشید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

میثم لطفی (+)

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *