أكواد Bash و PowerShell، أتمتة سطر الأوامر
أكواد Bash (macOS/Linux) وPowerShell (Windows) لأتمتة المهام اليومية: ملفّات، شبكة، مراقبة.
أوامر سطر الأوامر توفّر وقتاً هائلاً. هذه أكواد جاهزة للأتمتة.
Bash (macOS / Linux / WSL)
إدارة الملفّات
#!/bin/bash
# البحث عن ملفّات
find /path -name "*.log" -type f
find /path -mtime +7 # أقدم من 7 أيام
find /path -size +100M # أكبر من 100MB
# البحث في المحتوى
grep -r "pattern" /path
grep -rn "TODO". # مع أرقام الأسطر
grep -rl "pattern". # فقط أسماء الملفّات
# نسخ/نقل
cp -r source/ destination/
mv old_name new_name
# حذف بحذر
rm file.txt
rm -r folder/
rm -rf /path # خطر! تحقّق قبل التنفيذ
# ضغط
tar -czvf archive.tar.gz folder/
unzip archive.zip
معالجة نصّية
# عدّ الأسطر/الكلمات
wc -l file.txt # عدد الأسطر
wc -w file.txt # عدد الكلمات
# استخراج أعمدة (CSV)
cut -d',' -f1,3 data.csv # العمود 1 و 3
# استبدال (sed)
sed -i 's/old/new/g' file.txt
# فرز وإزالة مكرّرات
sort file.txt | uniq
sort -u file.txt
# أوّل/آخر أسطر
head -n 20 file.txt
tail -n 20 file.txt
tail -f app.log # متابعة حيّة
حلقات وشرطيات
# For loop
for file in *.txt; do
echo "Processing: $file"
wc -l "$file"
done
# While
count=0
while [ $count -lt 5 ]; do
echo "Count: $count"
((count++))
done
# If
if [ -f "config.txt" ]; then
echo "الملفّ موجود"
elif [ -d "config" ]; then
echo "مجلّد موجود"
else
echo "لا شيء"
fi
# مقارنة
if [[ "$name" == "أحمد" ]]; then
echo "مرحبا أحمد"
fi
الشبكة
# فحص اتصال
ping -c 4 google.com
# طلب HTTP
curl https://api.example.com/users
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"أحمد"}'
# تحميل ملفّ
wget https://example.com/file.zip
curl -O https://example.com/file.zip
# فحص منفذ
nc -zv google.com 443
مراقبة النظام
# استخدام القرص
df -h # كل الأقسام
du -sh /path/* # حجم كل مجلّد
# العمليات
ps aux | grep python
top # مراقبة حيّة
htop # (أفضل، يحتاج تثبيت)
# الذاكرة
free -h # (Linux فقط)
vm_stat # (macOS)
# قتل عملية
kill -9 <PID>
pkill -f "process_name"
مثال: سكريبت نسخ احتياطي
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
SOURCE="/Users/you/Documents"
BACKUP_DIR="/Users/you/Backups"
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
mkdir -p "$BACKUP_DIR"
echo "بدء النسخ الاحتياطي..."
tar -czf "$BACKUP_FILE" "$SOURCE"
if [ $? -eq 0 ]; then
echo "[OK] نجح النسخ: $BACKUP_FILE"
# احذف نسخ أقدم من 30 يوم
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +30 -delete
echo "[CLEAN] حُذفت النسخ القديمة"
else
echo "[FAIL] فشل النسخ"
exit 1
fi
جدولة (cron):
crontab -e
# كل يوم الساعة 2 صباحاً
0 2 * * * /path/to/backup.sh
PowerShell (Windows)
إدارة الملفّات
# البحث
Get-ChildItem -Path C:\Users -Filter "*.log" -Recurse
Get-ChildItem | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) }
# البحث في المحتوى
Select-String -Path *.txt -Pattern "TODO"
Get-ChildItem -Recurse | Select-String -Pattern "error"
# نسخ/نقل
Copy-Item source.txt -Destination dest.txt
Move-Item old.txt new.txt
# حذف
Remove-Item file.txt
Remove-Item -Recurse -Force folder\
# ضغط
Compress-Archive -Path folder\ -DestinationPath archive.zip
Expand-Archive -Path archive.zip -DestinationPath extracted\
معالجة نصّية
# قراءة/كتابة
$content = Get-Content file.txt
Set-Content -Path file.txt -Value $newContent
# استبدال
(Get-Content file.txt) -replace 'old', 'new' | Set-Content file.txt
# فرز وإزالة مكرّرات
Get-Content file.txt | Sort-Object | Get-Unique
# CSV
Import-Csv data.csv | Where-Object { $_.age -gt 30 }
حلقات وشرطيات
# ForEach
foreach ($file in Get-ChildItem *.txt) {
Write-Host "Processing: $($file.Name)"
}
# If
if (Test-Path "config.txt") {
Write-Host "موجود"
} elseif (Test-Path "config") {
Write-Host "مجلّد موجود"
} else {
Write-Host "غير موجود"
}
# مقارنة
if ($name -eq "أحمد") {
Write-Host "مرحبا أحمد"
}
الشبكة
# فحص اتصال
Test-Connection google.com
# HTTP
Invoke-RestMethod -Uri "https://api.example.com/users"
Invoke-RestMethod -Uri "https://api.example.com/users" `
-Method Post `
-Body (@{name="أحمد"} | ConvertTo-Json) `
-ContentType "application/json"
# تحميل ملفّ
Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "file.zip"
مراقبة النظام
# القرص
Get-PSDrive -PSProvider FileSystem
# حجم مجلّد
(Get-ChildItem -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
# العمليات
Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB }
Get-Process python
# قتل عملية
Stop-Process -Id 1234
Get-Process notepad | Stop-Process
# الخدمات
Get-Service | Where-Object { $_.Status -eq "Running" }
مثال: سكريبت مراقبة مساحة القرص
# check_disk.ps1
$drives = Get-PSDrive -PSProvider FileSystem
$threshold = 80 # نسبة الامتلاء التي تُنشط التنبيه
foreach ($drive in $drives) {
if ($drive.Used -and $drive.Free) {
$total = $drive.Used + $drive.Free
$percent = [math]::Round(($drive.Used / $total) * 100, 2)
if ($percent -gt $threshold) {
Write-Warning "[WARN] القرص $($drive.Name): $percent%"
# إرسال إيميل تنبيه (اختياري)
Send-MailMessage -To "admin@example.com" `
-Subject "تنبيه مساحة القرص" `
-Body "القرص $($drive.Name) استخدام $percent%"
}
}
}
جدولة (Task Scheduler):
- افتح Task Scheduler
- Create Basic Task
- حدّد الجدول
- Action: Start a program
- Program:
powershell.exe - Arguments:
-File C:\path\to\check_disk.ps1
متغيّرات البيئة
Bash
# قراءة
echo $HOME
echo $PATH
# تعيين مؤقّت (للجلسة)
export API_KEY="sk-..."
# دائم (~/.bashrc أو ~/.zshrc)
echo 'export API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc
PowerShell
# قراءة
$env:USERNAME
$env:PATH
# تعيين مؤقّت
$env:API_KEY = "sk-..."
# دائم (System-wide)
[System.Environment]::SetEnvironmentVariable("API_KEY", "sk-...", "User")
نصائح ذهبية
shellcheckلـBash، أداة تحقّق من الأخطاء- PowerShell ISE أو VS Code، كتابة أفضل
- دائماً استخدم quotes حول متغيّرات فيها مسافات
set -eفي Bash، يوقف السكريبت عند أوّل خطأ$ErrorActionPreference = "Stop"في PowerShell، نفس الفكرة
المصادر الرسمية
اقرأ أيضاً: أفضل ١٠ أكواد Python · أكواد أتمتة يومية · أكواد Git الأساسية · Web Scraping
هل أفادك هذا المقال؟
الأسئلة الشائعة
مقالات ذات صلة
الذكاء الاصطناعي العام (AGI): هل قريب؟ الجدل الكامل
شرح لجدل AGI، ما هو تعريفه الحقيقي، آراء Sam Altman و Demis Hassabis و Yann LeCun و Gary Marcus، الاختبارات المقترحة، والتوقّعات الواقعية للوصول إليه.
AGI و Superintelligence، النقاش الحقيقي بلا خيال
شرح تفصيلي للذكاء العام (AGI) والذكاء الفائق (ASI): التعاريف، المتفائلون، المتحفّظون، ماذا يعني للحياة اليومية.
مصنّعو رقائق الذكاء الاصطناعي، NVIDIA، AMD، TSMC، Intel
دليل لصناعة رقائق AI: NVIDIA، AMD، Intel، Broadcom، TSMC، Samsung، الحصص، الحرب الجيوسياسية، والسعودية.
نشرة مقالات الأسبوعية
اشترك تصلك أحدث المقالات + مختارات نادرة كل أحد. بلا سبام، ألغي الاشتراك بضغطة.
لا نشارك بريدك مع أي طرف ثالث. راجع سياسة الخصوصية.