پاسخ تمرینها
در این صفحه، پاسخهای پیشنهادی و مختصر برای تمرینها آورده شدهاند. این صفحه در منوی اصلی قرار نگرفته است.
تمرین ۱: دیدن سخت — پاسخ نهایی
فقط سه خط ls مطابق صورت سؤال:
تمرین ۲: بازی بازی — فرمانها
# حذف کامل پوشه 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
تمرین ۵: شکار گزینهٔ درست — یکخطی نهایی
--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)
#!/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