این آزمون هفت درس بخش «فایلها و پوشهها» را میسنجد. جواب هر سؤال همان لحظه با توضیح نشان داده میشود و نتیجهات در همین مرورگر ذخیره میشود (پیشرفت من).
تنظیمات سیستم و برنامهها معمولاً در کدام پوشه است؟
etc = تنظیمات (فایلهای متنی).
لاگها و دادهی متغیر مثل دیتابیس معمولاً کجاست؟
var = دادهای که با کار کردن سیستم تغییر میکند.
/proc چیست؟
روی دیسک نیست؛ نمایی از هسته است.
اصل «همهچیز فایل است» یعنی…
برای همین cat روی /proc/cpuinfo کار میکند.
مسیر مطلق با چه چیزی شروع میشود؟
مسیر نسبی از پوشهی فعلی حساب میشود.
اگر در /home/ali/projects/web/css هستی، cd ../../api به کجا میرود؟
دو سطح بالا میروی (web، بعد projects) و بعد api.
cd - چه میکند؟
از متغیر $OLDPWD استفاده میکند.
کدام دستور مسیر تو در تو را یکجا میسازد؟
-p همهی والدها را میسازد و اگر هست خطا نمیدهد.
echo *.txt را چه کسی با اسم فایلها جایگزین میکند؟
برنامه فقط argument های جایگزینشده را میبیند.
rm بعد از اجرا…
قبل از rm با echo یا ls مطمئن شو.
برای دیدن ۲۰ خط آخر یک لاگ و دنبال کردن خطهای تازه؟
tail -f زنده دنبال میکند؛ -F برای لاگهای چرخان.
در vim برای شروع تایپ چه میکنی؟
vim در حالت Normal شروع میشود و حروف دستورند.
بعد از ln a.txt b.txt و rm a.txt چه میشود؟
اگر b.txt یک symlink بود، میشکست.
کدام دستور همهی فایلهای بزرگتر از ۱۰۰ مگابایت را پیدا میکند؟
+ بزرگتر؛ 2>/dev/null خطاهای دسترسی را دور میریزد.
قبل از find ... -delete چه کار میکنی؟
و -delete را آخرین شرط بگذار.
یک پوشهی downloads پر از فایلهای درهم داری. با دستورهای همین بخش آن را مرتب کن:
۱. با یک دستور mkdir ساختار sorted/{images,docs,archives} را بساز.
۲. همهی عکسها (.jpg، .JPG، .png) را با find (بیحساس به حروف) به sorted/images منتقل کن.
۳. فایلهای .pdf و .txt را به sorted/docs ببر (با wildcard).
۴. فایلهایی بزرگتر از ۵۰ مگابایت را پیدا کن، به sorted/archives منتقل کن و در downloads یک symlink به آنها بگذار.
۵. فایلهای .tmp قدیمیتر از ۷ روز را اول فهرست کن و بعد حذف کن.
۶. درخت نهایی sorted را (مرتب) چاپ کن و تعداد فایلهای هر پوشه را بشمار.
راهنمایی
برای انتقال با find: find downloads -type f \( -iname "*.jpg" -o -iname "*.png" \) -exec mv {} sorted/images/ \;. برای فایلهای بزرگ: -size +50M. برای قدیمیها: -mtime +7.
راهحل
# آمادهسازی پوشهی بینظمmkdir downloads && cd downloadstouch a.jpg b.JPG c.png report.pdf notes.txt todo.txt old.tmp new.tmptruncate -s 80M movie.isotouch -d "10 days ago" old.tmpcd ~# ۱) ساختارmkdir -p sorted/{images,docs,archives}# ۲) عکسهاfind downloads -type f \( -iname "*.jpg" -o -iname "*.png" \) -exec mv {} sorted/images/ \;# ۳) سندهاmv downloads/*.pdf downloads/*.txt sorted/docs/# ۴) فایلهای بزرگ + symlinkfind downloads -type f -size +50M -exec mv {} sorted/archives/ \;ln -s ../sorted/archives/movie.iso downloads/movie.iso# ۵) tmp های قدیمی: پیشنمایش و حذفecho "نامزدهای حذف:"; find downloads -name "*.tmp" -mtime +7find downloads -name "*.tmp" -mtime +7 -delete# ۶) نتیجهecho "--- درخت sorted:"; find sorted | sortecho "--- تعداد فایلها:"for d in images docs archives; do echo "$d: $(find sorted/$d -type f | wc -l)"; doneecho "--- باقیمانده در downloads:"; ls -l downloads | awk 'NR>1{print $9, $10, $11}'نامزدهای حذف:downloads/old.tmp--- درخت sorted:sortedsorted/archivessorted/archives/movie.isosorted/docssorted/docs/notes.txtsorted/docs/report.pdfsorted/docs/todo.txtsorted/imagessorted/images/a.jpgsorted/images/b.JPGsorted/images/c.png--- تعداد فایلها:images: 3docs: 3archives: 1--- باقیمانده در downloads:movie.iso -> ../sorted/archives/movie.isonew.tmp