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

Avatar
نویسنده: دریا آزادخواه
یکشنبه 18 فروردین 1398
مطالعه: ۱۲ دقیقه ۰ نظر ۱۹۳۵ بازدید

حذف فایل در لینوکس؛ دستورات rm و rmdir پرونده ها و دایرکتوری های موجود در لینوکس، macOS و سیستم عامل های مشابه یونیکس را حذف می کنند. عملکرد دو اسکریپت ذکرشده مشابه دستوراتی همچون del و deltree در windows و 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

حذف گروهی فایلها در Linux

اگر بخواهید گروهی از فایل ها را برای حذف انتخاب کنید، می توانید از گزینه ای به نام WildCard استفاده کنید که تحت عنوان کاراکتر عام شناخته شده است. نماد * نشان دهنده چندین کاراکتر می باشد و استفاده از نماد؟ تنها یک کاراکتر را مشخص می کند. دستوری که در ادامه آورده خواهد شد تمام پرونده هایی که شامل تصاویر png هستند را در دایرکتوری فعلی حذف می کند:

rm *.png

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

rm *.?

اگر یکی از پرونده های موجود در کامپیوتر شما به صورت write-protected باشد، شما نمی توانید آن را بدون هیچ تاییدی حذف کنید. به همین علت نیاز است تا با استفاده از y و n تایید و یا عدم تایید را بزنید و سپس دکمه Enter را فشار دهید.

برای آشنایی کامل با سیستم عامل لینوکس، انواع توزیع‌ها، زبان‌های برنامه‌نویسی، بخش‌های مختلف آن و… مقاله زیر را بخوانید.

لینوکس چیست؟

برای اینکه ریسک های احتمالی موجود در دستور rm با wildcard را کم کنید، بهترین کار این است که از گزینه i و یا interactive استفاده کنید. با فعال نمودن این دستور در کامپیوتر شما باید حذف هر فایل و پرونده را تایید کنید. دستور زیر مورد نیاز این امر است:

rm -i *.dat

گزینه f و یا force دقیقا بر عکس interactive عمل می کند. این دستور سریع کار تاییدیه را انجام نمی دهد، حتی اگر فایل ها به صورت write-protected باشند. دستور زیر به خوبی نشان دهنده این موضوع است:

rm -f filename

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

برای اینکه بتوانید دایرکتورهای خالی بدون فایل را حذف کنید، می توان از گزینه d و یا directory استفاده کرد. همچنین می توانید از wildcard ها در نام های دایرکتوری استفاده کنید. این قابلیت فقط در نام فایل ها قابلیت بهره وری دارد. به دستور زیر توجه کنید:

rm -d directory

اگر بیش از یک نام دایرکتوری را ارائه دهید، در آن صورت تمام دایرکتوری های خالی مشخص شده شده، حذف خواهند شد. همانند دستور زیر:

rm -d directory1 directory2 /path/to/directory3

به منظور حذف نمودن دایرکتوری هایی که خالی نیستند، می توان از گزینه r و یا recursive استفاده کرد. برای اینکه راحت تر موضوع رو درک کنید، به دستور زیر دقت کنید که نشان دهنده حذف دایرکتوری ها، تمامی فایل ها و ساب دایرکتوری ها می باشد:

rm -r directory1 directory2 directory3

اگر یک دایرکتوری و یا یک فایل به صورت write-protected باشد، در آن صورت برای حذف آن ها نیاز است تا در ابتدا گزینه تایید را بزنید. برای پاک کردن دایرکتوری هایی که خالی نیستند می توان از دو گزینه –r (recursive) و –f (force) به صورت همزمان استفاده کرد. همانند دستور زیر:

rm -rf directory

در این مرحله باید توجه بسیاری را داشته باشید. زیرا در صورت اشتباه کردن با دستور rm –rf، تمامی داده ها از بین خواهد رفت و یا سیستم دچار نقص و خطا خواهد شد. پس حواستان را جمع کنید و در راستای آن تمام احتیاط را در نظر بگیرید. برای به دست آوردن درک درستی از ساختار دایرکتوری و فایل هایی که با دستور rm –rf حذف می شوند، می توان از دستور tree استفاده کنید.

اگر سیستم شما از Ubuntu و یا چیزی مشابه آن استفاده می کند، برای اینکه بتوانید این پکیج را بر روی سیستم خود نصب کنید، از apt-get بهره ببرید. در سایر توزیع های لینوکس، به جای آن از ابزار مدیریت پکیج لینوکس استفاده کنید. دستور زیر را وارد کنید:

sudo apt-get install tree

معرفی دستور tree

اجرای دستور tree یک نمودار ساده را برای درک بهتر ساختار دایرکتوری و پرونده هایی که در ساب دایرکتوری ها اجرا می شوند، ایجاد می کند. به دستور و تصویر زیر دقت کنید:

Tree

همچنین می توانید مسیری را به دستور tree تهیه کنید تا باعث شود tree از دایرکتوری دیگری در سیستم پرونده شروع به کار کند. به دستور زیر توجه کنید:

tree path/to/directory

دستور rm دارای گزینه های متعددی می باشد که از آن ها می توان به one-file-system، no-preserve-root و preserve-root اشاره کرد اما موارد ذکرشده تنها به کاربرانی توصیه می شوند که به صورت حرفه ای لینوکس را دنبال می کنند.

همچنین اگر مشکلی برای سیستم تان به وجود آمد می توانید تمام پرونده های سیستم خود را به طور تصادفی حذف کنید. همچنین به منظور به دست آوردن اطلاعات دقیق تر و جامع تر می توانید از صفحه راهنمای این فرمان بهره ببرید.

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

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

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

rmdir directory

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

rmdir directory1 directory2 directory3

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

rmdir /path/to/directory

دستور حذف فولدرهای پر در لینوکس

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

هنگامی که دستور rmdir خطای خالی نبودن دایرکتوری را دریافت می کند، در آن صورت پردازش دایرکتوری هایی را که در خط فرمان به آن منتقل شده اند را متوقف خواهد کرد. اگر شما دستوری را وارد کرده اید که چهار دایرکتوری را حذف کند و فهرست اولی شامل فایل باشد، rmdir به سیستم شما خطا را ارسال می کند و کار دیگری انجام نمی دهد. به منظور ادامه یافتن پردازش های موجود در دایرکتوری و نادیده گرفتن پیغام خطا می توانید از گزینه ignore-fail-on-non-valent استفاده کنید.

در مثال زیر دو پوشه به rmdir منتقل شده اند. این دو پرونده کار/گزارش کار و کار/نقل ها هستند. همچنین گزینه ignore-fail-on-non-valent در این پوشه ها گنجانده شده اند. پوشه work/reports شامل فایل های متفاوتی هستند. در نتیجه اسکریپت rmdir قادر نخواهد بود آن ها را حذف نماید. ولی گزینه ignore-fail-on-non-valent، rmdir را مجبور خواهد کرد تا پیغام خطا را نادیده بگیرد و آن را به پوشه هایی که نیاز به پردازش دارند، انتقال دهد. این پوشه خالی بوده است و در نهایت rmdir آن را حذف می کند.

اسکریپتی که برای این کار مورد استفاده قرار می گیرد، به صورت زیر می باشد:

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

به منظور حذف نمودن تنها یک دایرکتوری می توانید از گزینه –p (parents) استفاده کنید. این ترفند می تواند بسیار موثر باشد. زیرا rmdir با دایرکتوری هدف (target) شروع می شود و سپس به سمت back-steps می رود که در گزینه parent موجود است. حال نیاز است تا دایرکتوری به طور کامل خالی باشد که rmdir می تواند آن را حذف کند. همچنین همین روند ادامه پیدا می کند. فرمانی که به دستور rmdir منتقل می شود، به صورت زیر می باشد:

rmdir -p work/invoices

در صورت درخواست فاکتورها و دایرکتوری ها حذف خواهند شد.

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

جمع بندی

در این مقاله از آموزش لینوکس به بررسی حذف فایل در  این سیستم عامل پرداختیم؛ فرقی نمی کند که از Bash و یا پوسته دیگری استفاده می کنید، لینوکس دستورات انعطاف پذیر و قدرتمندی را برای شما فراهم خواهد کرد تا دایرکتوری ها و پرونده را به صورت کاملا مستقیم از خط فرمان حذف کنید. برخی از افراد ترجیح می دهندتا دنباله کار داشته باشند، به همین علت کار خود را در اطراف ترمینال دنبال می کنند.

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

سوالات متداول

سوالت رایجی در مورد نحوه حذف فایل در لینوکس وجود دارد که در ادامه قصد داریم به بررسی چند مورد از آن ها بپردازیم.

1. به غیر از دستور rm از چه اسکریپتی می توان برای حذف فایل در لینوکس استفاده کرد؟

برای اینکه بخواهیم فایل را در لینوکس حذف کنیم، می توانیم از Unink استفاده کنیم.

2. دستور Unink به چه صورت است؟

دستور Unink به شما این امکان را می دهد تا تنها یک فایل واحد را حذف کنید.

3. دستور Unink برای حذف فایل در لینوکس به چه صورت باید وارد شود؟

دستور زیر به شما کمک می کند تا تنها یک فایل مشخص شده را از Unink حذف کنید:

unlink filename

4. آیا اطلاعاتی که پاک می شوند، قابل برگشت هستند؟

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