کار با فایلها و پوشهها
ناوبری در فایلسیستم با pwd و cd و مدیریت فایلها با ls، mkdir، cp، mv و rm.
آنچه در این درس میآموزید
- در درخت فایلسیستم جابهجا شوید و محتوای پوشهها را ببینید
- پوشه و فایل بسازید و با cp و mv آنها را کپی و جابهجا کنید
- فایلها را با cat و less بخوانید و با rm حذف کنید
فهرست مطالب
در لینوکس تقریباً همه چیز فایل است: اسناد شما، تنظیمات سیستم، و حتی سختافزارها در مسیر خاصی از درخت فایلسیستم نمایان میشوند. پس طبیعی است که مهمترین مهارت ترمینال، جابهجایی در این درخت و مدیریت فایلها باشد. فرمانهای این درس را عملاً هر ساعت استفاده خواهید کرد.
نکتهٔ تازهکاران: در ترمینال، سطل زبالهای وجود ندارد. چیزی که حذف میشود، حذف شده است. پس این درس را با احتیاط و البته بیترس دنبال کنید.
کجا هستم و چه چیزی هست؟
pwdنمونهٔ خروجی:
/home/sarapwd (print working directory) مسیر کامل پوشهٔ فعلی را میدهد. برای دیدن محتوای آن:
lsنمونهٔ خروجی:
documents notes.txt projectsبهصورت پیشفرض، ls فایلهای پنهان (آنهایی که نامشان با نقطه شروع میشود، مثل .bashrc) را نشان نمیدهد. گزینهٔ -a آنها را هم میآورد و گزینهٔ -l فهرست مفصلی از جزئیات میدهد:
ls -lنمونهٔ خروجی:
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
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
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 فایل خالی میسازد؛ اگر فایل موجود باشد فقط تاریخ آخرین تغییرش را بهروز میکند.
کپی، جابهجایی و تغییر نام
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 خطا میدهد و میگوید مسیر مقصد، پوشه است.
خواندن محتوا
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 linescat برای فایلهای کوتاه عالی است؛ برای فایلهای بلند از less استفاده کنید که با جهتدارها جابهجا میشوید و با q بیرون میآیید. فرمان tail بهخصوص برای دیدن انتهای فایلهای گزارش (log) کاربرد دائمی دارد.
حذف: rm
rm notes.txt # delete a file
rm -r projects-backup # delete a directory and everything inside itrm بدون پرسیدن و بدون بازگشت حذف میکند. گزینهٔ -r (بازگشتی) برای پوشه لازم است؛ بدون آن، rm از پیمایش داخل پوشه خودداری میکند.
تمرینها
تمرین
تمرین ۱ — ساخت درخت پروژه
در پوشهٔ خانه یک ساختار پوشهٔ playground/notes و playground/code با یک فرمان بسازید، داخل notes فایلی به نام todo.txt بسازید، متن دلخواهی داخلش بریزید و محتوایش را با cat بخوانید. سپس فایل را به playground/code منتقل کنید.
# Write your commands hereنمایش راهحل
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 تأیید کنید که رفته است.
# Write your commands hereنمایش راهحل
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را با احتیاط کامل به کار ببرید.
فایلها را میسازید، جابهجا میکنید و حذف میکنید؛ اما هنوز نمیدانید چه کسی اجازهٔ این کارها را به شما داده است. درس بعدی دربارهٔ مجوزهای فایلسیستم لینوکس صحبت میکند.