# پاسخ تمرین‌ها در این صفحه، پاسخ‌های پیشنهادی و مختصر برای تمرین‌ها آورده شده‌اند. این صفحه در منوی اصلی قرار نگرفته است. ## تمرین ۱: دیدن سخت — پاسخ نهایی فقط سه خط `ls` مطابق صورت سؤال: ``` ls -lth ls -lth ../alireza ls -lth ../../arshia/sub ``` ## تمرین ۲: بازی بازی — فرمان‌ها ``` # حذف کامل پوشه arshia rm -r -- bazi-bazi/arshia # ساخت ali/reza و زنجیره s/a/l/i/b mkdir -p bazi-bazi/ali/reza mkdir -p bazi-bazi/s/a/l/i/b ``` ## تمرین ۳: دفترچه تیمی — فرمان‌ها ``` # ساخت ساختار و فایل‌های روزانه mkdir -p ~/notebook/daily ~/notebook/ideas cd ~/notebook touch daily/day-01.txt daily/day-02.txt daily/day-03.txt # ایجاد و نوشتن سه ایده در brainstorm.txt printf "Idea 1\nIdea 2\nIdea 3\n" > ideas/brainstorm.txt # تجمیع ایده‌ها در یک فایل cat ideas/brainstorm.txt >> ideas/all-ideas.txt # تأیید: تعداد خطوط و سپس نمایش محتوا wc -l ideas/all-ideas.txt && cat ideas/all-ideas.txt ``` ## تمرین ۴: بایگانی پروژه — فرمان‌ها ``` # 1) نسخه پشتیبان src در backup/src-copy mkdir -p ~/mini-project/backup cp -r ~/mini-project/src ~/mini-project/backup/src-copy # 2) تغییر نام و جابه‌جایی draft.txt به notes.txt در ریشه پروژه mv ~/mini-project/tmp/draft.txt ~/mini-project/notes.txt # 3) حذف old.log rm ~/mini-project/tmp/old.log # 4) حذف tmp در صورت خالی بودن rmdir ~/mini-project/tmp ``` ## تمرین ۵: شکار گزینهٔ درست — یک‌خطی نهایی ``` find ~/Downloads -type f -size +5M -exec ls -lh {} + ``` - `-type f`: فقط فایل‌ها - `-size +5M`: بزرگ‌تر از ۵ مگابایت - `-exec ls -lh {} +`: نمایش خروجی با اندازهٔ خوانا ## تمرین ۶: تقویم تیم پشتیبان — فرمان‌ها ``` # 1) تاریخ/زمان فعلی در قالب خواسته‌شده date +"%Y-%m-%d %H:%M" > support-schedule.txt # 2) ماه جاری و دو ماه بعد، با یک خط خالی بین هر ماه for i in 0 1 2; do cal $(date -d "+$i month" +"%m %Y") >> support-schedule.txt echo >> support-schedule.txt done # 3) استخراج شمارهٔ هفته‌های ماه جاری و افزودن به انتهای فایل ncal -w | awk 'NR>1 {print $NF}' | paste -sd ' ' - | \ sed 's/^/Current month weeks: /' >> support-schedule.txt ``` ## تمرین ۷: پایپ‌لاین خطاگیر — یک‌خطی پایدار ``` # فقط فایل‌های متنی .log پردازش می‌شوند؛ خطاها در pipeline-errors.log ذخیره می‌شود grep -h "ERROR" ~/logs/service-*.log 2>> ~/logs/pipeline-errors.log \ | tee -a ~/logs/errors-full.log \ | tee /dev/tty \ | wc -l > ~/logs/error-count.txt ``` - `grep -h "ERROR"`: فیلتر خطوط خطا از فایل‌های `service-*.log` - `2>> pipeline-errors.log`: ثبت خطاهای احتمالی اجرای دستور - `tee -a errors-full.log`: ذخیرهٔ کامل خطوط فیلترشده (ضمیمه) - `tee /dev/tty`: نمایش همزمان در صفحه - `wc -l > error-count.txt`: شمارش کل خطاها و نوشتن در فایل ## تمرین ۸: یادداشتِ مریخی — نمونه‌حل خیلی ساده (Bash) ```bash #!/bin/bash read -r q EXISTS=0 CONTENT="" i=0 while [ "$i" -lt "$q" ] do read -r OP TEXT if [ "$OP" = "touch" ] then if [ "$EXISTS" = "0" ]; then EXISTS=1 CONTENT="" fi elif [ "$OP" = ">" ] then EXISTS=1 CONTENT="$TEXT" elif [ "$OP" = ">>" ] then EXISTS=1 if [ -z "$CONTENT" ]; then CONTENT="$TEXT" else CONTENT="$CONTENT $TEXT" fi fi i=$((i + 1)) done if [ "$EXISTS" = "0" ] || [ -z "$CONTENT" ]; then echo "EMPTY" else printf '%s\n' "$CONTENT" fi ```