لینوکس و ترمینالمقدماتی۸ دقیقه مطالعهGeneric Linux + Bash

کار با فایل‌ها و پوشه‌ها

ناوبری در فایل‌سیستم با pwd و cd و مدیریت فایل‌ها با ls، mkdir، cp، mv و rm.

آنچه در این درس می‌آموزید

  • در درخت فایل‌سیستم جابه‌جا شوید و محتوای پوشه‌ها را ببینید
  • پوشه و فایل بسازید و با cp و mv آن‌ها را کپی و جابه‌جا کنید
  • فایل‌ها را با cat و less بخوانید و با rm حذف کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

در لینوکس تقریباً همه چیز فایل است: اسناد شما، تنظیمات سیستم، و حتی سخت‌افزارها در مسیر خاصی از درخت فایل‌سیستم نمایان می‌شوند. پس طبیعی است که مهم‌ترین مهارت ترمینال، جابه‌جایی در این درخت و مدیریت فایل‌ها باشد. فرمان‌های این درس را عملاً هر ساعت استفاده خواهید کرد.

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

کجا هستم و چه چیزی هست؟

bash
pwd

نمونهٔ خروجی:

text
/home/sara

pwd (print working directory) مسیر کامل پوشهٔ فعلی را می‌دهد. برای دیدن محتوای آن:

bash
ls

نمونهٔ خروجی:

text
documents  notes.txt  projects

به‌صورت پیش‌فرض، ls فایل‌های پنهان (آن‌هایی که نام‌شان با نقطه شروع می‌شود، مثل .bashrc) را نشان نمی‌دهد. گزینهٔ -a آن‌ها را هم می‌آورد و گزینهٔ -l فهرست مفصلی از جزئیات می‌دهد:

bash
ls -l

نمونهٔ خروجی:

text
total 8
drwxr-xr-x 2 sara sara 4096 Oct 30 10:15 documents
drwxr-xr-x 3 sara sara 4096 Oct 30 10:20 projects
-rw-r--r-- 1 sara sara  220 Oct 30 09:48 notes.txt

هر سطر یک فایل است: حرف اول نوعش است (d یعنی پوشه، - یعنی فایل معمولی)؛ بقیهٔ سطر مجوزها، مالک، اندازه و تاریخ را می‌گوید که در درس «مجوزها» کامل باز می‌کنیم.

جابه‌جایی: cd

bash
cd projects      # enter the projects directory
cd ..            # go up one level
cd ~             # jump to the home directory
cd -             # return to the previous directory

دو مسیر مفهومی مهم: مسیر «مطلق» از ریشهٔ فایل‌سیستم شروع می‌شود (/home/sara/projects) و مسیر «نسبی» از پوشهٔ فعلی حساب می‌شود (projects/web). علامت / فقط ریشه است و .. همیشه یک پله بالاتر.

ساختن: mkdir و touch

bash
mkdir projects          # create a directory
mkdir -p projects/web/docs   # create a chain of directories with one command
touch notes.txt         # create an empty file

گزینهٔ -p در mkdir پوشه‌های واسط را هم می‌سازد و اگر پوشه از قبل باشد، خطا نمی‌دهد. فرمان touch فایل خالی می‌سازد؛ اگر فایل موجود باشد فقط تاریخ آخرین تغییرش را به‌روز می‌کند.

کپی، جابه‌جایی و تغییر نام

bash
cp notes.txt notes-backup.txt    # copy a file
cp -r projects projects-backup   # copy a directory recursively
mv notes-backup.txt old.txt      # rename
mv old.txt documents/            # move into another directory

فرمان mv هم برای تغییر نام است و هم برای جابه‌جایی؛ چون در فایل‌سیستم هر دو کار یکی هستند: تغییر مسیر. دقت کنید برای کپی پوشه حتماً -r لازم است، وگرنه cp خطا می‌دهد و می‌گوید مسیر مقصد، پوشه است.

خواندن محتوا

bash
cat notes.txt     # print the whole file to the terminal
less big.log      # read long files page by page
head -n 5 big.log # first five lines
tail -n 5 big.log # last five lines

cat برای فایل‌های کوتاه عالی است؛ برای فایل‌های بلند از less استفاده کنید که با جهت‌دارها جابه‌جا می‌شوید و با q بیرون می‌آیید. فرمان tail به‌خصوص برای دیدن انتهای فایل‌های گزارش (log) کاربرد دائمی دارد.

حذف: rm

bash
rm notes.txt          # delete a file
rm -r projects-backup # delete a directory and everything inside it

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

تمرین‌ها

تمرین

تمرین ۱ — ساخت درخت پروژه

در پوشهٔ خانه یک ساختار پوشهٔ playground/notes و playground/code با یک فرمان بسازید، داخل notes فایلی به نام todo.txt بسازید، متن دلخواهی داخلش بریزید و محتوایش را با cat بخوانید. سپس فایل را به playground/code منتقل کنید.

bash
# Write your commands here
نمایش راه‌حل
bash
cd ~
mkdir -p playground/notes playground/code
echo "learn the terminal" > playground/notes/todo.txt
cat playground/notes/todo.txt
mv playground/notes/todo.txt playground/code/
ls playground/code

گزینهٔ -p در mkdir دو زنجیرهٔ playground/notes و playground/code را با یک فرمان ساخت و فرمان mv فایل را بدون تغییر نام جابه‌جا کرد.

:::

تمرین

تمرین ۲ — کپی، بایگانی، پاک‌سازی

یک کپی از پوشهٔ playground به نام playground-backup بگیرید، سه سطر آخر فایل‌های گزارش سیستمی را نمونه‌وار تمرین کنید (tail روی هر فایل متنی که دارید)، و در پایان پوشهٔ playground-backup را کامل حذف کنید و با ls تأیید کنید که رفته است.

bash
# Write your commands here
نمایش راه‌حل
bash
cp -r playground playground-backup
tail -n 3 playground/code/todo.txt
rm -r playground-backup
ls

دقت کنید که حذف پوشه بدون -r ممکن نبود؛ rm برای پوشه خطای «cannot remove ... Is a directory» می‌دهد.

:::

خلاصه

  • pwd مسیر فعلی، ls محتوا و cd ابزار جابه‌جایی است؛ .. یک پله بالاتر و ~ خانهٔ شماست.
  • mkdir -p زنجیرهٔ پوشه‌ها و touch فایل خالی می‌سازد.
  • cp کپی می‌کند (برای پوشه با -r) و mv هم جابه‌جا و هم تغییر نام می‌دهد.
  • cat، less، head و tail محتوای فایل را نشان می‌دهند.
  • rm بازگشت‌ناپذیر است؛ برای پوشه -r لازم است و rm -rf را با احتیاط کامل به کار ببرید.

فایل‌ها را می‌سازید، جابه‌جا می‌کنید و حذف می‌کنید؛ اما هنوز نمی‌دانید چه کسی اجازهٔ این کارها را به شما داده است. درس بعدی دربارهٔ مجوزهای فایل‌سیستم لینوکس صحبت می‌کند.

منابع و ارجاع‌ها