اسکریپت‌نویسی در لینوکس یکی از قدرتمندترین مهارت‌ها برای خودکارسازی وظایف، مدیریت سیستم و افزایش بهره‌وری است. چه یک مدیر سیستم باشید و چه یک کاربر عادی، با یادگیری اسکریپت‌نویسی میتوانید کارهای تکراری را به صورت خودکار انجام دهید و کنترل کاملی بر محیط لینوکس خود داشته باشید.

اسکریپت چیست؟

یک اسکریپت فایلی متنی حاوی دنباله‌ای از دستورات است که توسط یک مفسر (مانند Bash) اجرا میشود. اسکریپت‌ها نیازی به کامپایل ندارند و مستقیماً اجرا می‌شوند.

انتخاب مفسر مناسب

رایج‌ترین مفسر در لینوکس، Bash (Bourne Again SHell) است. برای اسکریپتهای ساده، از خط اول زیر استفاده کنید:


#!/bin/bash

این خط به سیستم می‌گوید که از Bash برای اجرای اسکریپت استفاده کند.

ایجاد اولین اسکریپت

  1. یک فایل جدید ایجاد کنید:

    nano first_script.sh
  2. محتوای زیر را در آن قرار دهید:

    #!/bin/bash
    echo "Hello, World!"
  3. فایل را executable کنید:

    chmod +x first_script.sh
  4. اسکریپت را اجرا کنید:

    ./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 بهبود می‌یابد. با تسلط بر مفاهیم پایه و سپس یادگیری تکنیک‌های پیشرفته، میتوانید اسکریپت‌های قدرتمندی برای خودکارسازی کارهای روزمره بنویسید.

همیشه اسکریپت‌های خود را در محیط تست آزمایش کنید و اصول امنیتی را رعایت کنید. جامعه لینوکس منبع عظیمی از مثال‌ها و راهنماهاست - از آنها استفاده کنید!