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

دستورات کار با فایل‌ها در لینوکس
نوامبر 02, 202542 ثانیه زمان مطالعه

آموزش کامل مدیریت فایل در لینوکس: ایجاد، حذف، ویرایش، کپی، انتقال و مشاهده محتوا با دستورات cat، cp، mv، rm، nano و vim.

آموزش کامل دستورات کار با فایل‌ها در لینوکس

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

ایجاد، حذف و ویرایش فایل‌ها

ایجاد فایل‌ها

برای ایجاد فایل در لینوکس چند روش وجود دارد. متداول‌ترین آن‌ها دستورات touch و cat هستند.

  • دستور touch: برای ایجاد فایل خالی استفاده می‌شود یا زمان آخرین ویرایش فایل موجود را به‌روزرسانی می‌کند.

    touch file1.txt
  • دستور cat: معمولاً برای نمایش محتواست اما می‌توان از آن برای ایجاد فایل هم استفاده کرد.

    cat > file2.txt

    سپس متن را تایپ کرده و با ترکیب کلیدهای Ctrl + D ذخیره و خارج شوید.

حذف فایل‌ها

برای حذف فایل‌ها از دستور rm استفاده می‌شود:

rm file1.txt

اگر می‌خواهید بدون تأیید حذف شود:

rm -f file1.txt

ویرایش فایل‌ها

در لینوکس دو ویرایشگر متنی محبوب وجود دارد: nano و vim.

  • ویرایش با nano: ساده و کاربرپسند.

    nano file2.txt
  • ویرایش با vim: قدرتمند و حرفه‌ای‌تر.

    vim file2.txt

    درون Vim:

    • :w → ذخیره فایل

    • :wq → ذخیره و خروج

    • :q! → خروج بدون ذخیره

کپی، انتقال و تغییر نام فایل‌ها

کپی فایل‌ها با دستور cp

برای ایجاد نسخه‌ای از فایل از دستور cp استفاده کنید:

cp file2.txt copy_file.txt

برای کپی کل پوشه‌ها به همراه محتوایشان:

cp -r dir1 dir2

انتقال و تغییر نام فایل‌ها با دستور mv

  • انتقال فایل به پوشه دیگر:

    mv file2.txt Documents/
  • تغییر نام فایل:

    mv file2.txt renamed_file.txt

نمایش محتویات فایل‌ها

دستور cat

برای نمایش محتوای کامل فایل:

cat file2.txt

دستور more

برای مشاهده محتوا به صورت صفحه‌به‌صفحه:

more file2.txt

کلید Space برای صفحه بعد و q برای خروج.

دستور less

مشابه more است اما می‌توان به بالا و پایین پیمایش کرد:

less file2.txt

برای خروج q را بزنید.

دستور head

نمایش خطوط ابتدایی فایل (به‌صورت پیش‌فرض ۱۰ خط):

head file2.txt

برای تعیین تعداد خطوط خاص:

head -n 5 file2.txt

دستور tail

نمایش آخرین خطوط فایل:

tail file2.txt

تعیین تعداد خطوط خاص:

tail -n 5 file2.txt

مشاهده زنده (مفید برای فایل‌های لاگ):

tail -f logfile.txt

۴. مفاهیم پیشرفته‌تر: I/O مستقیم، قفل‌های فایل، overlayfs و FUSE

در سطح تخصصی، دستورات ساده‌ی مدیریت فایل‌ها به مباحث عمیق‌تری مانند ورودی/خروجی مستقیم (Direct I/O)، قفل‌های هسته، فایل‌سیستم‌های همپوشان (overlayfs) و فایل‌سیستم‌های فضای‌کاربری (FUSE) گره می‌خورند که پاسخ‌گوی سوالات چالش‌برانگیز مطرح‌شده هستند.

  • رفتار پیشرفته در EXT4، O_DIRECT و fallocate: در EXT4، ترکیب پرچم O_DIRECT (برای I/O مستقیم و عبور از کش صفحه) با عملیات fallocate از نوع FALLOC_FL_COLLAPSE_RANGE (که برای حذف بخش‌هایی از فایل و فشرده‌سازی آن استفاده می‌شود) می‌تواند به یک بن‌بست پنهان (AB-BA deadlock) منجر شود. این اتفاق زمانی رخ می‌دهد که قفل‌های inode->i_dio_count (شمارنده‌ی عملیات‌های I/O مستقیم) و inode->i_mapping->i_mmap (قفل نگاشت حافظه) به ترتیب وارونه گرفته شوند. درک این وابستگی‌ها برای عیب‌یابی مشکلات کارایی و هنگ‌کردن سیستم در سرورهای با بار بالا حیاتی است.

  • overlayfs و متادیتا (metacopy): در overlayfs، گزینه‌ی metacopy=on به کرنل اجازه می‌دهد تا ابرداده‌های فایل (مانند اندازه، زمان‌ها و مجوزها) را در لایه‌ی بالایی (upper) ذخیره کند، در حالی که داده‌های واقعی در لایه‌ی پایین‌تر (lower) باقی می‌مانند. هنگام باز کردن یک فایل با open(O_RDONLY) که فقط متادیتا در لایه‌ی بالایی دارد، تابع کرنلی ovl_maybe_copy_up_data تعیین می‌کند که آیا نیاز به کپی‌کردن داده‌ها از لایه‌ی پایین‌تر به لایه‌ی بالایی (که به آن copy-up گفته می‌شود) وجود دارد. این مکانیسم نقش کلیدی در بهینه‌سازی فضای ذخیره‌سازی در کانتینرها ایفا می‌کند.

  • FUSE و چالش‌های I/O مستقیم: در فایل‌سیستم‌های فضای‌کاربری (FUSE)، اگر فایلی با پرچم FUSE_DIRECT_IO باز شود و همزمان تابع fuse_invalidate_attr برای بی‌اعتبارسازی ویژگی‌های فایل فراخوانی گردد، قفل fi->lock (قفل درون ساختار fuse_inode) می‌تواند باعث خواب (sleep) غیرمنتظره در تابع fuse_read_iter شود. این مسئله یکی از چالش‌های رایج در رفع‌اشکال برنامه‌هایی است که از FUSE برای پیاده‌سازی سیستم‌فایل‌های سفارشی مانند sshfs یا encfs استفاده می‌کنند.

  • I/O غیرهمگام با io_uring: در کنار دستورات سنتی، io_uring یک API پیشرفته برای انجام عملیات‌های ورودی/خروجی غیرهمگام روی فایل‌ها است. این رابط با کاهش تعداد تماس‌های سیستمی (syscall) و استفاده از صف‌های حلقوی مشترک بین کاربر و هسته، کارایی فوق‌العاده‌ای در برنامه‌های با تراکنش‌های بالای فایل (مانند پایگاه‌داده‌ها و وب‌سرورها) ارائه می‌دهد و جایگزینی مدرن برای epoll و aio محسوب می‌شود.

نتیجه‌گیری

در این مقاله یاد گرفتید چطور فایل‌ها را در لینوکس ایجاد، حذف، ویرایش، کپی، جابه‌جا و مشاهده کنید. با تمرین روی این دستورات، می‌توانید در مدیریت فایل‌ها به تسلط کامل برسید و کارهای روزمره خود را سریع‌تر انجام دهید. همچنین با مفاهیم پیشرفته‌تری مانند قفل‌های هسته در EXT4، مکانیسم copy-up در overlayfs، چالش‌های FUSE و مدل I/O غیرهمگام io_uring آشنا شدید که شما را برای عیب‌یابی و بهینه‌سازی در محیط‌های تولیدی آماده می‌کند.

سؤالات متداول درباره مدیریت فایل‌ها در لینوکس

۱. تفاوت بین cat، more و less چیست؟

دستور cat تمام محتوا را یک‌جا نشان می‌دهد، more محتوا را صفحه‌به‌صفحه، و less امکان پیمایش بالا و پایین را فراهم می‌کند.

۲. چگونه فایل را بدون باز کردن ویرایش کنیم؟

می‌توانید با echo محتوای دلخواه را مستقیماً در فایل بنویسید:

echo "Hello Linux" > myfile.txt

۳. آیا حذف فایل‌ها با rm قابل بازگشت است؟

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

۴. چطور می‌توان محتوای یک فایل را به فایل دیگر اضافه کرد؟

با استفاده از اپراتور دو علامت بزرگتر:

cat file1.txt >> file2.txt

۵. دستور tail -f برای چیست؟

این دستور محتوا را در لحظه (Real-time) نمایش می‌دهد و معمولاً برای بررسی فایل‌های لاگ سیستم استفاده می‌شود.