-
- 19 ابان 1404
- سیستم عامل لینوکس
اسکریپتنویسی در لینوکس یکی از قدرتمندترین مهارتها برای خودکارسازی وظایف، مدیریت سیستم و افزایش بهرهوری است. چه یک مدیر سیستم باشید و چه یک کاربر عادی، با یادگیری اسکریپتنویسی میتوانید کارهای تکراری را به صورت خودکار انجام دهید و کنترل کاملی بر محیط لینوکس خود داشته باشید.
اسکریپت چیست؟
یک اسکریپت فایلی متنی حاوی دنبالهای از دستورات است که توسط یک مفسر (مانند Bash) اجرا میشود. اسکریپتها نیازی به کامپایل ندارند و مستقیماً اجرا میشوند.
انتخاب مفسر مناسب
رایجترین مفسر در لینوکس، Bash (Bourne Again SHell) است. برای اسکریپتهای ساده، از خط اول زیر استفاده کنید:
#!/bin/bash
این خط به سیستم میگوید که از Bash برای اجرای اسکریپت استفاده کند.
ایجاد اولین اسکریپت
-
یک فایل جدید ایجاد کنید:
nano first_script.sh -
محتوای زیر را در آن قرار دهید:
#!/bin/bash echo "Hello, World!" -
فایل را executable کنید:
chmod +x first_script.sh -
اسکریپت را اجرا کنید:
./first_script.sh
متغیرها
- تعریف متغیر:
name="John"
age=30
- استفاده از متغیر:
echo "My name is $name and I am $age years old."
دریافت ورودی از کاربر
- خواندن ورودی:
echo "Enter your name:"
read username
echo "Hello, $username!"
عملگرهای محاسباتی
#!/bin/bash
a=10
b=5
# جمع
echo $((a + b)) # خروجی: 15
echo $(expr $a + $b)
ساختارهای شرطی
- شرط ساده if:
if [ $age -ge 18 ]; then
echo "You are an adult."
else
echo "You are a minor."
fi
-
عملگرهای مقایسهای:
-
-eq: برابر -
-ne: نامساوی -
-lt: کمتر از -
-gt: بیشتر از -
-ge: بزرگتر یا مساوی
-
حلقهها
- حلقه for:
for i in {1..5}; do
echo "Number: $i"
done
- حلقه while:
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
((count++))
done
اسکریپتنویسی پیشرفته
کار با آرگومانها
-
آرگومانهای خط فرمان:
#!/bin/bash
echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"
echo "All arguments: $@"
echo "Number of arguments: $#"
توابع
-
تعریف و فراخوانی تابع:
#!/bin/bash
greet() {
local name=$1
echo "Hello, $name!"
}
greet "Alice"
greet "Bob"
مدیریت خطاها
- خروجی در صورت خطا:
#!/bin/bash
set -e # در اولین خطا اسکریپت متوقف میشود
# یا برای خطای خاص:
command || { echo "Command failed"; exit 1; }
کار با فایلها و دایرکتوریها
#!/bin/bash
# بررسی وجود فایل
if [ -f "/path/to/file" ]; then
echo "File exists."
fi
# بررسی وجود دایرکتوری
if [ -d "/path/to/directory" ]; then
echo "Directory exists."
fi
# خواندن از فایل
while IFS= read -r line; do
echo "Line: $line"
done < "file.txt"
ابزارهای مفید برای اسکریپتنویسی
دستورات پرکاربرد
-
grep: جستجوی متن
grep "pattern" file.txt
-
sed: ویرایش متن
sed 's/old/new/g' file.txt
-
awk: پردازش متن پیشرفته
awk '{print $1}' file.txt
-
find: جستجوی فایل
find /path -name "*.txt"
دیباگ کردن اسکریپت
-
فعال کردن حالت دیباگ:
#!/bin/bash -x # نمایش تمام دستورات
# یا در داخل اسکریپت:
set -x # شروع دیباگ
set +x # پایان دیباگ
مثالهای عملی
اسکریپت پشتیبانگیری
#!/bin/bash
# اسکریپت پشتیبانگیری ساده
BACKUP_DIR="/home/backup"
SOURCE_DIR="/home/user/documents"
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
echo "Backup completed: backup_$DATE.tar.gz"
مثال ۲: مانیتورینگ منابع سیستم
#!/bin/bash
# مانیتورینگ استفاده از CPU و Memory
echo "=== System Resources ==="
echo "CPU Usage: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
echo "Memory Usage: $(free -h | grep Mem | awk '{print $3 "/" $2}')"
echo "Disk Usage:"
df -h / | awk 'NR==2 {print $3 " used out of " $2}'
مثال ۳: مدیریت کاربران
#!/bin/bash
# اسکریپت ایجاد کاربر
if [ $(id -u) -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
read -p "Enter username: " username
read -s -p "Enter password: " password
useradd -m $username
echo "$username:$password" | chpasswd
echo "User $username created successfully"
بهترین روشها
امنیت
-
از
set -eبرای توقف در صورت خطا استفاده کنید -
از
set -uبرای تشخیص متغیرهای تعریف نشده -
از quoting برای جلوگیری از حملات تزریق استفاده کنید:
"$variable"
قابلیت نگهداری
-
کامنتگذاری مناسب
-
استفاده از نامهای معنادار برای متغیرها
-
تقسیم اسکریپتهای پیچیده به ماژولهای کوچک
قابلیت حمل
-
از دستورات استاندارد POSIX استفاده کنید
-
از مسیرهای مطلق خودداری کنید
-
وابستگیها را چک کنید
نتیجهگیری
اسکریپتنویسی در لینوکس مهارتی است که با تمرین و experimentation بهبود مییابد. با تسلط بر مفاهیم پایه و سپس یادگیری تکنیکهای پیشرفته، میتوانید اسکریپتهای قدرتمندی برای خودکارسازی کارهای روزمره بنویسید.
همیشه اسکریپتهای خود را در محیط تست آزمایش کنید و اصول امنیتی را رعایت کنید. جامعه لینوکس منبع عظیمی از مثالها و راهنماهاست - از آنها استفاده کنید!
نظر خود را اینجا بنویسید