Files
khorasan-doc/docs/exam3.md
T
nearology 99fb7f0e82 Add sitemap and styles for Persian font integration
- Created a new sitemap.xml file for better SEO.
- Added a compressed version of the sitemap as sitemap.xml.gz.
- Introduced extra.css for custom styles, including Persian font support (IRANSansX).
- Defined font-face rules for regular and bold styles of IRANSansX.
- Implemented various text styles and layout adjustments for better readability.
- Enhanced Mermaid diagram styles to support Persian text rendering.
2026-04-28 15:27:18 +03:30

304 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# آزمون‌های فصل ۳ — اسکریپت‌نویسی Bash
در این فایل دو آزمون چهارگزینه‌ای ۱۰ سؤالی برای فصل ۳ (و کمی از مباحث انتهای فصل ۲) آورده شده است. سطح سؤالات متوسط رو به بالا است.
---
## آزمون ۱ — Bash مقدماتی و منطق اسکریپت
**سؤال ۱)** هدف اصلی خط زیر در ابتدای اسکریپت Bash چیست؟
`#!/bin/bash`
الف) تبدیل اسکریپت به فایل باینری
ب) مشخص‌کردن مفسر (interpreter) برای اجرای اسکریپت
ج) دادن مجوز اجرایی به فایل
د) تغییر دایرکتوری فعلی هنگام اجرا
**پاسخ صحیح: ب**
**سؤال ۲)** کدام دستور تعریف متغیر در Bash از نظر نگارش درست است؟
الف) `USER NAME="student"`
ب) `USER_NAME = "student"`
ج) `USER_NAME="student"`
د) `USER_NAME: "student"`
**پاسخ صحیح: ج**
**سؤال ۳)** در اسکریپت زیر چه اتفاقی می‌افتد؟
```bash
#!/bin/bash
read -p "Name: " NAME
echo "Hello $NAME!"
```
الف) بدون نمایش چیزی از کاربر ورودی می‌گیرد
ب) فقط متن `"Name: "` را چاپ می‌کند و تمام می‌شود
ج) یک نام از کاربر می‌گیرد و سپس او را با آن نام سلام می‌کند
د) همیشه `"Hello $NAME!"` را بدون گرفتن ورودی چاپ می‌کند
**پاسخ صحیح: ج**
**سؤال ۴)** در یک اسکریپت Bash، متغیر `$1` معمولاً چه چیزی را نگه می‌دارد؟
الف) نام اسکریپت
ب) تعداد آرگومان‌های خط فرمان
ج) اولین آرگومان خط فرمان هنگام اجرای اسکریپت
د) خط جاری در حال اجرا در اسکریپت
**پاسخ صحیح: ج**
**سؤال ۵)** اسکریپت زیر چه زمانی پیام خطا را چاپ می‌کند؟
```bash
#!/bin/bash
AGE="$1"
if [ "$AGE" -gt 18 ]; then
echo "Adult"
elif [ "$AGE" -eq 18 ]; then
echo "Exactly 18"
else
echo "Minor"
fi
```
اگر این اسکریپت با دستور `bash script.sh 18` اجرا شود، خروجی چیست؟
الف) `Adult`
ب) `Exactly 18`
ج) `Minor`
د) هیچ‌چیز چاپ نمی‌شود
**پاسخ صحیح: ب**
**سؤال ۶)** فرض کنید اسکریپت زیر را داریم:
```bash
#!/bin/bash
if [ "$1" = "start" ] || [ "$1" = "stop" ]; then
echo "OK"
else
echo "Invalid"
fi
```
کدام یک از دستورات زیر خروجی `Invalid` تولید می‌کند؟
الف) `bash script.sh start`
ب) `bash script.sh stop`
ج) `bash script.sh START`
د) `bash script.sh start stop`
**پاسخ صحیح: ج**
**سؤال ۷)** خروجی اسکریپت زیر چیست؟
```bash
#!/bin/bash
for N in 1 2 3
do
if [ "$N" -eq 2 ]; then
continue
fi
echo "N=$N"
done
```
الف)
`N=1`
ب)
`N=2`
`N=3`
ج)
`N=1`
`N=3`
د)
`N=1`
`N=2`
`N=3`
**پاسخ صحیح: ج**
**سؤال ۸)** اسکریپت زیر چند خط روی صفحه چاپ می‌کند؟ (بدون درنظر گرفتن خط فرمان `read`)
```bash
#!/bin/bash
COUNT=1
while [ "$COUNT" -le 3 ]
do
echo "Loop $COUNT"
COUNT=$((COUNT + 1))
done
```
الف) هیچ خطی
ب) ۲ خط
ج) ۳ خط
د) ۴ خط
**پاسخ صحیح: ج**
**سؤال ۹)** کدام الگوی وایلدکارد فقط فایل‌هایی مثل `file_01.txt` و `file_12.txt` را می‌گیرد و *فایل `file_100.txt`* را شامل نمی‌شود؟
الف) `file_*.txt`
ب) `file_?.txt`
ج) `file_??.txt`
د) `file_[0-9]*.txt`
**پاسخ صحیح: ج**
**سؤال ۱۰)** دستور زیر چه کاری انجام می‌دهد؟
```bash
tar -czf backup.tar.gz mydir/
```
الف) فایل `backup.tar.gz` را استخراج می‌کند
ب) پوشهٔ `mydir/` را فشرده و در `backup.tar.gz` آرشیو می‌کند
ج) فقط ساختار دایرکتوری `mydir/` را بدون فایل‌ها ذخیره می‌کند
د) محتویات `backup.tar.gz` را روی `mydir/` بازنویسی می‌کند
**پاسخ صحیح: ب**
### پاسخ‌نامه آزمون ۱
- ۱) ب
- ۲) ج
- ۳) ج
- ۴) ج
- ۵) ب
- ۶) ج
- ۷) ج
- ۸) ج
- ۹) ج
- ۱۰) ب
---
## آزمون ۲ — حلقه‌ها، case، توابع، وایلدکارد، فشرده‌سازی و awk
**سؤال ۱)** الگوی زیر در شل کدام نوع فایل‌ها را انتخاب می‌کند؟
`*.[ch]`
الف) همهٔ فایل‌هایی که نامشان فقط یک کاراکتر است
ب) همهٔ فایل‌هایی که پسوندشان `c.` یا `h.` است
ج) همهٔ فایل‌هایی که پسوندشان `c` یا `h` است (مثل `main.c`, `util.h`)
د) هیچ فایلی، چون الگو نادرست است
**پاسخ صحیح: ج**
**سؤال ۲)** امن‌ترین روال برای حذف فایل‌های موقت با الگوی `*.tmp` کدام است؟
الف) مستقیم: `rm *.tmp`
ب) `rm -f *.tmp`
ج) اول `ls *.tmp` برای بررسی، سپس `rm -i *.tmp` برای حذف تعاملی
د) `rm -rf / *.tmp`
**پاسخ صحیح: ج**
**سؤال ۳)** دستور زیر چه کاری می‌کند؟
```bash
tar -tzf backup.tar.gz
```
الف) آرشیو را فشرده می‌کند
ب) آرشیو را استخراج می‌کند
ج) محتویات آرشیو را *بدون استخراج* فهرست می‌کند
د) آرشیو را حذف می‌کند
**پاسخ صحیح: ج**
**سؤال ۴)** کدام گزینه، یک آرشیو zip تکرارشونده از پوشهٔ `project/` می‌سازد؟
الف) `zip project project/`
ب) `zip -r project.zip project/`
ج) `tar -czf project.zip project/`
د) `zip -x project.zip project/`
**پاسخ صحیح: ب**
**سؤال ۵)** کدام دستور awk ستون اول و سوم یک فایل CSV را که با کاما جدا شده چاپ می‌کند؟
الف) `awk '{print $1, $3}' data.csv`
ب) `awk -F, '{print $1, $3}' data.csv`
ج) `awk -F, '{print $0}' data.csv`
د) `awk -F: '{print $1, $3}' data.csv`
**پاسخ صحیح: ب**
**سؤال ۶)** برای محاسبهٔ مجموع اعداد ستون دوم در فایل `prices.txt` با awk کدام دستور مناسب است؟
الف) `awk '{print $2}' prices.txt`
ب) `awk '{sum += $2} END {print sum}' prices.txt`
ج) `awk -F, '{sum += $1} END {print sum}' prices.txt`
د) `awk 'END {print $2}' prices.txt`
**پاسخ صحیح: ب**
**سؤال ۷)** اسکریپت زیر را در نظر بگیرید:
```bash
#!/bin/bash
read -p "Mode (start/stop): " MODE
case "$MODE" in
start)
echo "Starting..."
;;
stop)
echo "Stopping..."
;;
*)
echo "Unknown mode"
;;
esac
```
اگر کاربر مقدار `START` (با حروف بزرگ) را وارد کند، خروجی چیست؟
الف) `Starting...`
ب) `Stopping...`
ج) `Unknown mode`
د) هیچ‌چیز چاپ نمی‌شود
**پاسخ صحیح: ج**
**سؤال ۸)** در اسکریپت زیر خروجی چیست؟
```bash
#!/bin/bash
count=0
inc() {
count=$((count + 1))
}
inc
inc
echo "$count"
```
الف) هیچ خروجی‌ای تولید نمی‌شود
ب) `1`
ج) `2`
د) خطای نحوی رخ می‌دهد
**پاسخ صحیح: ج**
**سؤال ۹)** خروجی اسکریپت زیر چیست؟
```bash
#!/bin/bash
for N in 1 2 3 4
do
if [ "$N" -gt 2 ]; then
break
fi
echo "$N"
done
```
الف)
فقط `1`
ب)
`1`
`2`
ج)
`1`
`2`
`3`
د) هیچ‌چیز چاپ نمی‌شود
**پاسخ صحیح: ب**
**سؤال ۱۰)** اسکریپت زیر را در نظر بگیرید:
```bash
#!/bin/bash
for ARG in "$@"
do
echo "[$ARG]"
done
```
اگر این اسکریپت با دستور زیر اجرا شود:
`bash script.sh "A B" C`
خروجی چیست؟
الف)
`[A]`
`[B]`
`[C]`
ب)
`[A B C]`
ج)
`[A B]`
`[C]`
د) هیچ‌چیز چاپ نمی‌شود
**پاسخ صحیح: ج**
### پاسخ‌نامه آزمون ۲
- ۱) ج
- ۲) ج
- ۳) ج
- ۴) ب
- ۵) ب
- ۶) ب
- ۷) ج
- ۸) ج
- ۹) ب
- ۱۰) ج