RDP Monster

ما هو ملف ‎.sh؟ دليل سكربتات الشل وBash وLinux

ما هو ملف ‎.sh؟ دليل سكربتات الشل وBash وLinux

مقدّمة

تُعدّ سكربتات Shell ركيزة إدارة أنظمة Linux و Unix، إذ توفّر قدرات أتمتة قوية تعزّز إنتاجية وكفاءة إدارة الأنظمة بشكل ملحوظ. ملف .sh هو سكربت مكتوب بلغة Shell — لغة برمجة متخصّصة لتفسير الأوامر وأتمتة المهام النظامية المتكرّرة.

سواء كنت مسؤول نظام يدير مئات الخوادم، أو مطوّرًا يؤتمت خطوط نشر، أو متحمّسًا لـ Linux يسعى لتطوير مهاراته التقنية، فإن فهم سكربتات Shell أمر أساسي. يشرح هذا الدليل الشامل ماهية ملفات .sh، وكيف تعمل، والتطبيقات المختلفة للـ Shell، مع أمثلة عملية واقعية لاستخدام السكربتات.

 

ما هو ملف .sh؟

تعريف

.sh file is a plain text file containing a series of shell commands executed sequentially by a shell interpreter. The .sh extension indicates the file is a shell script, though many shell scripts omit this extension in practice.

تمثل سكربتات shell الجسر بين الاستخدام التفاعلي لسطر الأوامر والبرمجة الكاملة. تتيح لك:

  • أتمتة المهام المتكررة

  • دمج عدة أوامر في سير عمل معقدة

  • إنشاء أدوات إدارة قابلة لإعادة الاستخدام

  • جدولة عمليات الصيانة المؤتمتة

  • نشر التطبيقات برمجياً


الخصائص

Plain Text Format: Unlike compiled programs requiring compilation, shell scripts are human-readable text interpreted directly by the shell.

Interpreter-Based: Execution depends on the specified shell interpreter (Bash, Ksh, etc.), not the underlying system architecture.

سطر shebang: تبدأ معظم نصوص الصدفة بـ shebang (#!/bin/bash) يحدد أي مفسر صدفة سيُستخدم.

عبر المنصات: تعمل نصوص الصدفة باستمرار عبر أنظمة Unix/Linux مختلفة (بافتراض تثبيت الأصداف المناسبة).


التطبيقات في الواقع

  • سكربتات بدء التشغيل وإيقاف النظام

  • أتمتة النسخ الاحتياطي والاستعادة

  • مراقبة الخوادم والتنبيه

  • خطوط نشر التطبيقات

  • معالجة وتحليل ملفات السجل

  • توفير حسابات المستخدمين

  • أتمتة تكوين الشبكة

  • مهام صيانة قواعد البيانات

 

أساسيات Shell Scripting

ما هو الـ Shell؟

الـ shell هو مفسر أوامر يوفر واجهة بين المستخدمين ونواة نظام التشغيل. يقبل أوامر المستخدم ويفسرها وينفذ البرامج المقابلة.

وظائف الـ Shell:

  • قراءة وتحليل أوامر المستخدم

  • البحث عن البرامج القابلة للتنفيذ

  • تنفيذ البرامج بالوسائط المناسبة

  • معالجة إعادة توجيه الإدخال/الإخراج

  • إدارة التحكم في العمليات

  • تنفيذ بنى البرمجة (الحلقات، الشروط)


لماذا تستخدم سكربتات Shell؟

Automation: Execute complex sequences automatically without manual intervention.

Efficiency: Complete in seconds what might take hours manually.

الاتساق: ضمان عمليات متطابقة عبر أنظمة متعددة.

التوثيق: تَوثِّق تعليقات النص الإجراءات للرجوع إليها مستقبلًا.

Scalability: Scale operations from one server to hundreds without additional effort.

Recovery: Rebuild systems quickly using existing scripts.

 

Bash (Bourne-Again Shell)

Market Share: ~95% of Linux systems
Creator: Brian Fox (GNU Project)
Features: شاملة feature set, scripting capabilities
البنية: متوافقة مع صدفة Bourne الأصلية
حالة الاستخدام: الافتراضي على معظم توزيعات Linux

Bash هو المعيار الفعلي لكتابة سكربتات shell على Linux. يوازن بين التوافق مع الـ shell الأصلية وتوفير ميزات حديثة.


Ksh (Korn Shell)

Creator: David Korn (AT&T Bell Labs)
Features: متقدم programming capabilities, faster execution
Syntax: Superset of Bourne shell
Use Case: Preferred on Unix systems (Solaris, AIX)
Advantages: أفضل performance for compute-intensive operations

لا يزال Ksh شائعاً في بيئات Unix المؤسسية، خاصةً على أنظمة Unix التجارية.


Sh (Bourne Shell)

Original POSIX Standard Shell
Creator: Stephen Bourne (AT&T Bell Labs)
Features: الحد الأدنى, standardized functionality
Modern Status: Largely historical; contemporary shells provide compatibility

يمثل Sh معيار POSIX، مما يضمن التوافق الأساسي عبر جميع الأنظمة الشبيهة بـ Unix.


Zsh (Z Shell)

Creator: Paul Falstad
Features: Interactive features, scripting capabilities
Modern Focus: Enhanced user experience over pure scripting
Use Case: Growing in popularity among developers

يمثل Zsh التطور الحديث للـ shell، ويوازن بين قوة الكتابة البرمجية والميزات التفاعلية الصديقة للمستخدم.


Tcsh/Csh

Csh Creator: Bill Joy (Berkeley)
Modern Version: Tcsh (enhanced csh)
Features: C-like syntax
Status: Declining usage, maintained primarily for compatibility

لا تزال مشتقات Csh موجودة على بعض الأنظمة لكنها تقدم مزايا متناقصة مقارنةً بـ Bash/Ksh.

 

Bash مقابل Ksh والصدفات الأخرى

جدول المقارنة

Feature Bash Ksh Zsh Sh
سجل الأوامر Yes Yes Yes No
إكمال الأوامر Basic Basic متقدم No
المصفوفات مفهرسة مفهرسة + ترابطية Yes No
مطابقة الأنماط أنماط glob متقدم متقدم محدود
الدوال Yes Yes Yes Yes
الحساب $(()) (()) $(()) محدود
التوافق مع POSIX ~95% 100% ~90% 100%
الأداء Good أفضل Good الأسرع
ميزات البرمجة النصية شاملة أكثر تقدمًا الأكثر تقدمًا الحد الأدنى
التوافق ممتاز ممتاز Good عالمي
منحنى التعلم معتدل معتدل أكثر انحدارًا الأسهل
الاستخدام النموذجي Linux الافتراضي Unix المؤسسي اختيار المطورين Compatibility


When to Choose Each Shell

اختر Bash عندما:

  • أقصى توافق مع أنظمة Linux

  • العمل مع أدوات تتوقع بناء جملة Bash

  • ألفة الفريق مع Bash

  • بيئات تركز على Linux

اختر Ksh عندما:

  • العمليات الحرجة من حيث الأداء

  • Unix المؤسسي environments

  • التي تتطلب ميزات برمجة متقدمة

  • دعم أنظمة Unix القديمة

اختر Zsh عندما:

  • استخدام تفاعلي للصدفة ذو أولوية

  • متقدم user experience desired

  • بيئات تركز على المطورين

  • توزيعات Linux الحديثة

اختر Sh عندما:

  • يلزم أقصى قابلية نقل POSIX

  • دعم منصات Unix المتنوعة

  • تقليل التبعيات

  • التنفيذ خفيف الوزن أساسي


إنشاء سكربتات Shell وتنفيذها

Creating a Basic Shell Script

Step 1: Create File
touch myscript.sh


Step 2: Edit File
nano myscript.sh

Step 3: Add Shebang and Commands
#!/bin/bash echo "Hello, World!" date

Step 4: Make Executable
chmod +x myscript.sh

Step 5: Execute
./myscript.sh


Execution Methods

Direct Execution (requires executable permissions)
./myscript.sh

Explicit Interpreter
bash myscript.sh

Source Command (executes in current shell)
source myscript.sh or . myscript.sh


Understanding the Shebang

The shebang (#!) specifies which interpreter executes the script:
#!/bin/bash # Use Bash
#!/bin/ksh # Use Ksh
#!/usr/bin/env bash # Use Bash via environment (more portable)
#!/usr/bin/python # Use Python interpreter

 

البنية الأساسية لسكربتات Shell

Variables


Conditional Statements

# If-else
if [ $age -gt 18 ]; then
  echo "Adult"
else
  echo "Minor"
fi
 
# Case statement
case $day in
  Monday)
    echo "Start of week"
    ;;
  Friday)
    echo "End of week"
    ;;
  *)
    echo "Midweek"
    ;;
esac


Loops

# For loop
for i in 1 2 3 4 5; do
  echo "Number: $i"
done
 
# While loop
count=0
while [ $count -lt 5 ]; do
  echo "Count: $count"   
  ((count++))
done
 
# Until loop
until [ $count -eq 10 ]; do
   echo "Count: $count"
  ((count++))
done


Functions

# Function definition
greet() {
 echo "Hello, $1!"
}
 
# Function with return value
add() {
  return $(($1 + $2))
}
 
# Function calls
greet "Alice"
add 5 3
echo "Sum: $?" # $? holds return value
 
 

مفاهيم متقدّمة في كتابة السكربتات

Error Handling

#!/bin/bash
set -e # Exit on error
 
# Check command success
if ! command_name; then
  echo "Command failed"
  exit 1
fi
 
# Trap errors
trap 'echo "Error on line $LINENO"' ERR


File Operations

# File existence checking
if [ -f "/path/to/file" ]; then
  echo "File exists"
fi
 
# Directory operations
if [ -d "/path/to/dir" ]; then
 echo "Directory exists"
fi
 
# Read file line-by-line
while IFS= read -r line; do
  echo "Line: $line"
done < filename.txt


User Input

# Read from user
read -p "Enter your name: " name
 
# Read multiple values
read -p "Enter values: " val1 val2 val3
 
# Read into array
read -a array_name
 
 

أمثلة عملية

System Backup Script

#!/bin/bash
 
# Backup important directories
BACKUP_DIR="/backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
echo "Starting backup..."
 
# Create backup directory
mkdir -p "$BACKUP_DIR"
 
# Backup home directory
tar -czf "$BACKUP_DIR/home_$TIMESTAMP.tar.gz" /home
 
# Backup system configuration
tar -czf "$BACKUP_DIR/etc_$TIMESTAMP.tar.gz" /etc
echo "Backup complete: $BACKUP_DIR/home_$TIMESTAMP.tar.gz"


Disk Space Monitor

#!/bin/bash
 
THRESHOLD=80
ALERT_EMAIL="[email protected]"
 
# Check disk usage
disk_usage=$(df / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
 
if [ $disk_usage -gt $THRESHOLD ]; then
  echo "Disk usage critical: $disk_usage%" | mail -s "Alert" $ALERT_EMAIL
  echo "Alert sent to $ALERT_EMAIL"
fi


User Account Provisioning

#!/bin/bash
 
read -p "Enter username: " username
read -p "Enter email: " email
 
# Create user
useradd -m -s /bin/bash "$username"
 
# Set password (prompt method recommended)
echo "Set password for $username:"
passwd "$username"
 
# Add to groups
usermod -aG sudo "$username"
echo "User $username created successfully"
 
 

لماذا تعتمد إدارة الخوادم البعيدة على سكربتات Shell

يقوم مسؤولو الأنظمة الذين يديرون الخوادم البعيدة عبر اتصالات RDP أو SSH بتنفيذ نصوص الصدفة بشكل متكرر من أجل:

  • عمليات النشر الآلية: نشر التطبيقات عبر خوادم متعددة في وقت واحد

  • صيانة النظام: جدولة وتنفيذ مهام الصيانة الروتينية

  • Monitoring: Continuously monitor system health and log anomalies

  • Backup Operations: Automate critical data backup procedures

  • تحديثات الأمان: نشر تصحيحات الأمان عبر البنية التحتية

Professional remote desktop management platforms like RDP.Monster enable shell script execution across enterprise infrastructure:


إدارة بنية Linux التحتية مع RDP.Monster

إدارة Linux المؤسسية

  • وصول SSH لتنفيذ نصوص الصدفة عن بُعد

  • قدرات النشر الآلي

  • العمليات الدفعية عبر خوادم متعددة

  • المراقبة والتنبيه في الوقت الفعلي

حلول VPS لبنية النصوص البرمجية

  • موارد مخصصة للنصوص البرمجية كثيفة الحوسبة

  • جدولة دائمة لمهام cron

  • وقت تشغيل موثوق للعمليات المجدولة

  • بنية تحتية قابلة للتوسع لتعقيد النصوص البرمجية المتنامي

Deploy enterprise Linux infrastructure for sophisticated shell script operations with RDP.Monster

 

خلاصة

Shell scripts represent a powerful automation tool essential for Linux system administration and development. Understanding .sh files, shell implementations, and scripting techniques enables IT professionals to dramatically increase productivity, ensure consistency, and manage complex infrastructure efficiently.

سواء كنت تستخدم Bash على Linux أو Ksh على Unix المؤسسي أو Zsh للتطوير التفاعلي، فإن إتقان البرمجة النصية للصدفة يفصل المسؤولين القادرين عن المؤهلين فقط. الاستثمار في تطوير مهارات برمجة نصية قوية يوفر عوائد لعقود من إدارة أنظمة Linux.

Managing complex Linux infrastructure requiring sophisticated automation? RDP.Monster provides SSH access and VPS infrastructure optimized for running mission-critical shell scripts at scale. Explore Linux-friendly VPS solutions today.

استضافة VPS لينكس قوية

استمتع بتحكّم كامل وأداء فائق السرعة مع VPS لينكس لدينا. مثاليّ لاستضافة التطبيقات وإدارة الخوادم وتحسين سير العمل.

Dedicated Servers

خوادم مخصّصة عالية الأداء

هل تحتاج إلى أقصى تحكّم وقوة؟ توفّر خوادمنا المخصّصة أداءً لا مثيل له للمهام المتطلّبة.

الأسئلة الشائعة

ما الفرق بين سكربتات .sh وسكربتات bash؟

.sh امتداد عام يشير إلى سكربتات Shell (لأي صدفة)؛ أما bash فيشير تحديدًا إلى صدفة Bash.

سكربت bash يعمل بامتداد .sh، لكن ليس كل سكربت .sh هو bash.

هل أستخدم #!/bin/bash أم #!/usr/bin/env bash؟

استخدم #!/usr/bin/env bash لتحقيق توافق عبر الأنظمة التي قد يكون bash مثبّتًا فيها بمسارات غير قياسية.

لماذا تفشل سكربتاتي عند تشغيلها من cron؟

يعمل cron في بيئة دنيا جدًا.

استخدم مسارات مطلقة، واضبط متغيّرات البيئة بشكل صريح، وحدّد المسار الكامل للمفسّر في shebang.

كيف أجعل السكربت قابلًا للتنفيذ؟

استخدم chmod +x scriptname.sh لإضافة صلاحيات التنفيذ.

هل يمكنني تشغيل سكربتات Shell على Windows؟

يتيح Windows Subsystem for Linux (WSL) أو Git Bash تشغيل سكربتات Shell.

يفضّل Windows الأصلي استخدام PowerShell للأتمتة.

ما الفرق بين الأمرين . و source؟

هما متكافئان في Bash؛ كلاهما يشغّل السكربتات في الصدفة الحالية.

source أكثر وضوحًا، بينما . متوافق مع الصدفات القديمة.

كيف أصحّح أخطاء سكربت Shell؟

إليك الحل:

استخدم bash -x scriptname.sh لتتبع التنفيذ سطرًا بسطر، أو أضف set -x داخل السكربت.

هل يمكنني تمرير وسائط إلى سكربتات Shell؟

نعم!

استخدم المعطيات الموضعية: $1 (الوسيط الأول)، و$2 (الثاني)، وهكذا. ويحتوي $@ على جميع الوسائط.

Register to our reseller program

Your informations

If you have any question, contact us by clicking here !
Name(Required)
Enter your email address, you must have an account on manager.rdp.monster !

Your company

Enter your website address if you have one
Quickly explain how you're going to sell services to your customers. For example, talk to people on forums.

نحن نستخدم ملفات تعريف الارتباط !

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك، وتقديم إعلانات أو محتوى مخصص، وتحليل حركة المرور لدينا. بالنقر على «قبول»، فإنك توافق على استخدامنا لملفات تعريف الارتباط.