به همراه سایر دستورات اصلی لینوکس مانند ایجاد، ویرایش و … فایلها، یکی دیگر از مهمترین دستورات لینوکس، دستور حذف فایل است که لازم است با آن آشنا شوید. این دستورات در حیطه لینوکس مقدماتی هستند که هر فردی به آنها نیاز پیدا میکند. لینوکس یک سیستم عامل محبوب است و برای انجام هر عملیات در آن چندین راه و روش وجود دارد. در این مقاله به صورت کامل با انواع راهها و روشهای حذف فایل در لینوکس آشنا خواهید شد و همچنین فلگهای مهم و ضروری آنها را که میتواند بسیاری از کارهای شما را سریعتر انجام دهد را خواهید شناخت.
دستور نحوه حذف فایلها در لینوکس
به طور کلی دستور rm که مخفف کلمه remove به همراه دستور rmdir برای حذف فایلها و پوشهها در لینوکس به کار میروند. این دستور همانند دستور del در ویندوز و داس عمل میکنند. این دستورات بسیار قدرتمند هستند اما آپشنهای کمی دارند.
نکته مهم: توجه داشته باشید فایلها و پوشههای حذف شده با استفاده از دستورات rm و rmdir به سطل زباله منتقل نمیشوند و مستقیم حذف میشوند. در استفاده از این دستورات به طور کامل دقت کنید و در صورت نیاز میتوانید یک پشتیبان تهیه کنید. تنها راه بازیابی این فایلها استفاده از نسخه پشتیبان است.
دستور حذف فایلها در لینوکس: rm
سادهترین راه برای حذف فایلها در لینوکس استفاده از دستور rm است. کلمه rm را تایپ کنید و پس یک فاصله نام فایلی را که میخواهید حذف کنید را وارد کنید.
سینتکس:
1 | rm [OPTIONS] FILENAME |
به عنوان مثال، برای حذف یک فایل با نام file_1.txt، عبارت زیر را در خط فرمان تایپ کنید:
1 | rm file_1.txt |
اگر فایل در دایرکتوری فعلی نیست میتوانید نام فایل را به همراه مسیر آن وارد کنید:
1 | rm ./path/to/the/file/file_1.txt |
شما میتوانید نام بیش از یک فایل را وارد کنید و سپس همگی آنها حذف میشوند:
1 | rm file_2.txt file_3.txt |
برای انتخاب گروهی فایلها میتوانید از حروف عام استفاده کنید. ستاره * برای مشخص کردن هر کاراکتری،؟ برای مشخص کردن تک کاراکتریها و … . برای مثال دستور زیر تمامی فایلهای موجود با فرمت png در آن دایرکتوری با هر نامی حذف خواهند شد:
1 | rm *.png |
دستور زیر تمام فایلهایی را که پسوند یک کاراکتری دارند را حذف میکند. برای مثال دستور زیر فایلهای name.1 و name.2 که پسوند یک کاراکتری دارند را حذف میکند اما فایل name.12 که پسوند آن 2 کاراکتری است (عدد ۱۲ دو کاراکتر دارد) را حذف نمیکند.
1 | rm *.؟ |
اگر فایلی محافظت شده یا write-protected باشد قبل از حذف از شما سؤال میشود که باید برای تأیید y و برای لغو n را وارد کنید و Enter را بزنید.
معرفی آپشنها و فلگهای دستور rm در لینوکس
همانطور که گفته شد دستور rm به طور پیش فرض بدون سوال تمام فایلهای وارد شده را حذف میکند. برای کاهش خطر این دستور به خصوص در هنگام استفاده از حروف عام میتوانید از فلگ -i که مخفف interactive میباشد استفاده کنید. با قرار دادن این فلگ در دستور rm قبل از حذف نهایی هر فایل از شما درخواست میشود تا تأیید کنید.
1 | rm -i *.dat |
آپشن -f مخفف کلمه force دقیقاً متضاد فلگ -i عمل میکند. تمام فایلهای مشخص شده را حتی اگر فایلی محافظت شده باشد را بدون هیچگونه سؤالی حذف میکند.
1 | rm -f filename |
حذف فایلها در لینوکس با استفاده از دستور unlink
دستور unlink نیز یکی دیگر از دستورات نه چندان محبوب حذف فایل در لینوکس است که میتوانید از آن استفاده کنید. نحوه استفاده از این دستور نیز همانند دستور rm است. با تایپ دستور زیر میتوانید فایل file.jpg را حذف کنید:
1 | unlink file.jpg |
تفاوت بین دستور rm و unlink چیست؟
هر دو دستور برای حذف فایلها به کار میروند. اما دستور unlink در لینوکس محدودیتهای زیر را دارد:
- حذف دایرکتوریها ممکن نیست.
- امکان بازگشت وجود ندارد.
- فقط میتواند یک فایل در یک دستور را حذف کند.
- هیچ آپشنی جز –help و –version ندارد.
نحوه حذف پوشهها در لینوکس با دستور rm
با استفاده از دستور rm هم میتوانید فایل و هم میتوانید یک پوشه را حذف کنید. برای حذف یک پوشه خالی میتوانید از آپشن -d که مخفف directory است استفاده کنید. همچنین میتوانید از حروف عام مانند (* و ؟) در این دستور نیز استفاده کنید.
1 | rm -d directory |
قرار دادن بیش از یک نام پوشه، همه پوشههای خالی مشخص شده را حذف میکند.
1 | rm -d directory1 directory2 /path/to/directory3 |
برای حذف پوشههایی که خالی نیستند از آپشن -r که مخفف recursive است استفاده کنید. استفاده از این آپشن، همه پوشههای مشخص شده به همراه فایلها و پوشههای زیر مجموعه آن را حذف میکند.
1 | rm -r directory1 directory2 directory3 |
اگر دایرکتوری یا فایلی در برابر نوشتن محافظت شده باشد، از شما خواسته میشود که با پاسخ به یک سؤال، عملیات حذف را تأیید کنید. برای حذف پوشههایی که خالی نیستند و همچنین برای عدم مشاهده سؤالات مربوط به فایلها یا پوشههای محافظت شده میتوانید از دو آپشن -r و -f که مخفف force هست به صورت زیر استفاده کنید.
1 | rm -rf directory |
استفاده از دستور tree برای اطمینان بیشتر
دستور rm -rf کمی خطرناک است و باید در استفاده از آن بسیار دقت کنید. این دستور همه چیز را حذف میکند و اشتباه در دستور rm -rf میتواند باعث از بین رفتن اطلاعات یا اختلال در عملکرد سیستم شود. بهتر است قبل از استفاده از این دستور، از دستور tree برای نمایش فایلهای موجود در یک پوشه استفاده کنید تا با اطمینان بیشتری آن پوشه را حذف کنید.
اگر از اوبونتو یا توزیعهای دیگر مبتنی بر دبیان استفاده میکنید میتوانید برای نصب tree از apt-get و دستور زیر استفاده کنید. در سایر توزیعهای لینوکس از ابزار مدیریت بسته مربوط به آن توزیع استفاده کنید.
1 | sudo apt-get install tree |
با اجرای دستور tree یک نمودار ساده درختی برای درک بهتر یک پوشه و زیرمجموعههای آن رسم میشود.
Tree
خروجی:
│ ├── menus
│ │ └── gnome-applications.menu
│ ├── systemd
│ │ └── user -> ../../systemd/user
│ ├── user-dirs.conf
│ ├── user-dirs.defaults
│ └── Xwayland-session.d
│ └─
همچنین میتوانید یک مسیر برای دستور tree مشخص کنید تا نمودار مربوط به آن پوشه را مشاهده کنید.
1 | tree path/to/directory |
دستور rm همچنین دارای آپشنهای –one-file-system, –no-preserve-root, –preserve-root است که به کاربران مبتدی توصیه نمیشود. این دستورات خطرات بیشتری دارند و ممکن است به طور تصادفی باعث حذف فایلهای اصلی سیستم شما شوند.
نحوه حذف دایرکتوریها در لینوکس با دستور rmdir
دستور دیگری به نام rmdir وجود دارد که میتوانید از آن برای حذف پوشهها استفاده کنید. تفاوت دستور rm و rmdir در این است که دستور rmdir فقط میتواند پوشههایی را که خالی هستند را حذف کند. با این دستور نمیتوانید پوشههای پر را حذف کنید.
این دستور سادهترین راه برای حذف پوشههای خالی با خیال راحت است. همانند دستور rm میتوانید نام چند پوشه یا مسیر را به آن بدهید تا آنها را حذف کند.
1 | rmdir directory |
با ارسال فهرستی از نامها به rmdir، چندین فهرست را حذف کنید:
1 | rmdir directory1 directory2 directory3 |
با تعین مسیر یک پوشه میتوانید پوشههای غیر از دایرکتوری فعلی را حذف کنید.
1 | rmdir /path/to/directory |
اگر پوشه مشخص شده خالی نباشد، خطایی مانند خروجی زیر را دریافت خواهید کرد. پوشههایی که خالی نبودند دست نخورده باقی خواهند ماند و پوشههایی که خالی بودند حذف خواهند شد.
1 | rmdir: failed to remove 'myfiles/': Directory not empty |
هنگامی که دستور rmdir خطای “Directory not empty” را میدهد پردازش ادامه دایرکتوریهایی که به خط فرمان ارسال شدهاند متوقف خواهد شد. اگر خواسته باشید ۴ پوشه را حذف کنید و اولین پوشه خالی نباشد rmdir به شما پیغام خطا را نشان میدهد و دیگر کاری انجام نمیدهد.
با استفاده از آپشن –ignore-fail-on-non-empty میتوانید خطاهای مربوط به “Directory not empty” را نا دیده بگیرید و عملیات را کامل انجام دهید. با قرار دادن این فلگ دیگر با مشاهده یک پوشه پُر عملیات متوقف نخواهد شد.
برای مثال در دستور زیر دو پوشه work/reports و work/quotes به همراه آپشن –ignore-fail-on-non-empty با دستور rmdir اجرا شدهاند. پوشه work/reports خالی نیست بنابراین rmdir نمیتواند آن را حذف کند. فلگ –ignore-fail-on-non-empty فقط خطاها را نادیده میگیرد و پوشه بعدی را پردازش میکند. پوشه بعد یعنی work/quotes خالی است و rmdir آن را حذف میکند.
1 | rmdir --ignore-fail-on-non-empty work/reports /work/quotes |
میتوانید از اپشن -p که مخفف parents است برای حذف یک پوشه به همراه پوشههای والد آن استفاده کنید. روند انجام این عملیات اینگونه است که rmdir ابتدا پوشه مشخص شده (فرزند) را حذف میکند و پس از اینک پوشه والد خالی شد به سراغ آن میرود و آن را حذف میکند و این چرخه را تکرار میکند.
1 | rmdir -p work/invoices |
جمع بندی
چه از Bash یا هر shell دیگری استفاده میکنید لینوکس دستورات انعطاف پذیر و قدرتمندی را برای شما فراهم کرده است تا پوشهها و فایلها را مستقیماً از طریق خط فرمان ترمینال حذف کنید. به طور خلاصه سه راه اصلی و معمول حذف فایلها و پوشهها در لینوکس استفاده از دستورات rm، unlink و rmdir است. برخی از افراد ممکن است رابط گرافیکی نداشته باشند یا از طریق ریموت و یا با سیستمهایی مانند Raspberry Pi کار کنند که صرفاً با خط فرمان انجام این عملیاتها امکانپذیر خواهد بود. این دستورات به خوبی تمام نیازهای شما را برطرف خواهند کرد و همچنین میتوانید از آن دستورات برای خودکار سازی بسیاری از عملیاتهای که توسط cron انجام میشوند استفاده کنید.
سؤالات متداول
سه دستور اصلی برای حذف دایرکتوری و فایلها در لینوکس کداماند؟
- rm
- unlink
- rmdir
چگونه یک دایرکتوری یونیکس را حذف کنم؟
فرمان rmdir
برای خالی کردن و حذف یک دایرکتوری، عبارت زیر را تایپ کنید:
1 | rm mydir/* mydir/.* rmdir mydir. ... |
برای حذف پوشه /tmp/jones/demo/mydir و همه دایرکتوریهای زیر آن، عبارت زیر را تایپ کنید:
1 | cd /tmp rmdir -p jones/demo/mydir. |
آیا rm دایرکتوری را حذف میکند؟
شما از دستور rm برای حذف فایلها و دایرکتوریها در لینوکس استفاده میکنید. برای دایرکتوریها، از این دستور میتوان برای حذف کامل یک دایرکتوری استفاده کرد – یعنی یک دایرکتوری و تمام فایلها و زیر شاخههای داخل دایرکتوری را حذف میکند.
چگونه مخزن گیت را دری لینوکس حذف کنم؟
مراحل حذف یک مخزن GitHub:
- مطمئن شوید که به کنسول مدیریت GitHub وارد شدهاید.
- به تگ Repositories بروید.
- مخزن مورد نظر برای حذف را انتخاب کنید.
- روی تب تنظیمات کلیک کنید.
- به صفحه قسمت Danger Zone به پایین بروید.
- روی گزینه Delete this repository کلیک کنید.
چگونه یک دایرکتوری را در اوبونتو حذف کنم؟
با استفاده از سه دستور اصلی لینوکس یعنی:
- rm
- unlink
- rmdir