Linux: مشروع المرحلة 1 المصغّر — إعداد بيئة تطوير شخصية

هذا هو المشروع الختامي للمرحلة 1. ستطبّق كل ما تعلمته في الدروس الخمسة الأولى — عمليات الملفات، والتنقل في الدلائل، واختصارات الطرفية — لتبني بيئة تطوير لينكس شخصية عملية ومنظمة من الصفر.

📋 المتطلبات المسبقة: يجب إكمال

1. ما ستتعلمه


2. قصة شياو مينغ مع "البيئة الفوضوية"

(1) الألم: ملفات متناثرة في كل مكان، البحث كالبحث عن كنز

استخدم شياو مينغ لينكس لثلاثة أشهر، لكن كل جلسة كانت أشد إيلامًا من سابقتها:

(2) حل المعيارية

قرر شياو مينغ قضاء 10 دقائق في تنظيم بيئة تطويره باستخدام مهارات المرحلة 1: دلائل قياسية + أسماء مستعارة عملية + تثبيت بيئة التشغيل. بعد ذلك، أوامر طرفيته انخفضت من 10 ضغطات إلى 2.

(3) الفائدة: النظام يجلب الكفاءة

بيئة تطوير معيارية تعني أن شياو مينغ لا يحتاج "للتفكير" في أين الملفات — هياكل دلائل ثابتة، وأسماء أوامر مختصرة، وبيئات لغات تطوير جاهزة للاستخدام توفر له 30 دقيقة على الأقل يوميًا.


3. نقاط المعرفة

(1) هيكل دلائل المشروع القياسي

بيئة تطوير جيدة تبدأ بهيكل الدلائل. إليك تخطيطًا مقترحًا للمطورين:

TEXT

~/projects/          # كل المشاريع
├── web/             # مشاريع الوب
│   ├── frontend/
│   └── backend/
├── scripts/         # سكريبتات Shell
├── learning/        # تجارب تعليمية
├── notes/           # ملاحظات وتوثيق
└── tmp/             # ملفات مؤقتة (يمكن تنظيفها في أي وقت)

(2) PS1 — تخصيص محث Shell

متغير البيئة PS1 (Prompt String 1) يتحكم في شكل محث طرفيتك.

BASH
# الصيغة الافتراضية
# user@host:current_dir$

# تخصيصات شائعة
export PS1='\u@\h:\w\$ '           # user@host:/path/to/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ '     # بألوان
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ '       # عرض سطرين

ℹ️ ملاحظة: في تسلسلات الهروب لـPS1، \u هو اسم المستخدم، و\h هو اسم المضيف، و\w هو المسار الكامل، و\W يعرض اسم الدليل الحالي فقط. المحث ثنائي السطر (إضافة \n في PS1) لا يضغط مساحة إدخالك عندما تكون المسارات طويلة — موصى به بشدة.

تسلسلات الهروب الشائعة:

التسلسل المعنى
\u اسم المستخدم الحالي
\h اسم المضيف (صيغة قصيرة)
\w دليل العمل الحالي (مسار كامل)
\W اسم الدليل الحالي (المكوّن الأخير فقط)
\d التاريخ
\t الوقت (صيغة 24 ساعة)
\$ # (جذر) أو $ (مستخدم عادي)
\n سطر جديد

(3) alias — أعطِ أوامرك اسمًا مستعارًا

BASH
# الصياغة الأساسية
alias shortname='long-command'

# أسماء مستعارة شائعة
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'

> 💡 نصيحة: أكبر قيمة للأسماء المستعارة هي تقصير الأوامر الطويلة المتكررة إلى حرفين أو ثلاثة — مثل `ll` بدلًا من `ls -la`، أو `..` بدلًا من `cd ..`. ابدأ بـ3-5 أسماء مستعارة أكثر استخدامًا بدلًا من إعداد عشرات دفعة واحدة.

(4) ملف إعدادات .bashrc

~/.bashrc هو ملف الإعدادات الذي يُحمَّل عند بدء bash. كل مرة تفتح نافذة طرفية جديدة، ينفذ bash كل الأوامر في .bashrc.

BASH
# تعديل .bashrc
nano ~/.bashrc

# تطبيق التغييرات فورًا (بدون إغلاق الطرفية وإعادة فتحها)
source ~/.bashrc

(5) ▶ مثال: إنشاء هيكل دلائل قياسي

BASH
# اذهب إلى الدليل المنزلي
cd ~

# إنشاء دلائل قياسية والتحقق منها
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}

# عرض النتيجة
ls -la ~/projects

الإخراج:

TEXT
total 28
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web

(6) ▶ مثال: تخصيص محث PS1 (مؤقت)

BASH
# جرّب محثات مختلفة في الطرفية الحالية
export PS1='\u:\w\$ '
# النتيجة: alice:/home/alice$

export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# النتيجة: (أخضر) username@hostname
#         /current/path$

الإخراج:

TEXT
alice:/home/alice$

alice@ubuntu
/home/alice$

(7) ▶ مثال: إضافة أسماء مستعارة (دائم)

BASH
# تعديل .bashrc
echo '# My custom aliases' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc

# تطبيق التغييرات
source ~/.bashrc

# اختبار
ll
myip

الإخراج:

TEXT
total 48
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
-rw-r--r--  1 alice alice 3771 Jul  8 10:23 .bashrc
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 projects
203.0.113.42

(8) ▶ مثال: تثبيت Python وNode.js

BASH
# تثبيت Python3 وpip
sudo apt update
sudo apt install -y python3 python3-pip

# التحقق
python3 --version
# Output: Python 3.10.12

# تثبيت Node.js (من مستودع NodeSource الرسمي)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# التحقق
node --version
# Output: v20.12.0
npm --version

الإخراج:

TEXT
Python 3.10.12
v20.12.0
10.5.0

(9) ▶ مثال: التحقق من جاهزية البيئة

BASH

echo "=== Operating System ===" && lsb_release -d
echo "=== Home Directory Structure ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== Aliases ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1

الإخراج:

TEXT
=== Operating System ===
Description:    Ubuntu 22.04.3 LTS
=== Home Directory Structure ===
total 28
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web
=== Shell ===
/bin/bash
=== Python ===
Python 3.10.12
=== Node.js ===
v20.12.0
=== Aliases ===
alias cls='clear'
alias la='ls -A'
alias ll='ls -la'
=== PS1 ===
\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ 

(10) ▶ مثال شامل: سكريبت إعداد بيئة التطوير الكامل

احفظ هذا السكريبت باسم ~/setup-dev.sh وشغّله مرة واحدة لإكمال كل الإعدادات:

BASH
#!/bin/bash

set -e  # Exit immediately on error

echo "Setting up Linux development environment..."

# 1. إنشاء هيكل الدلائل
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ Directory structure created"

# 2. إعداد أسماء .bashrc المستعارة وPS1
cat >> ~/.bashrc << 'EOF'

# ---- Custom configuration starts ----

# Aliases
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'

# PS1 prompt
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '

# ---- Custom configuration ends ----
EOF
echo "✅ .bashrc configured"

# 3. تثبيت أدوات التطوير
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ Development tools installed"

# 4. التحقق
source ~/.bashrc
echo "=== Environment Verification ==="
echo "Python: $(python3 --version 2>/dev/null || echo 'not installed')"
echo "Node.js: $(node --version 2>/dev/null || echo 'not installed')"
echo "Git: $(git --version 2>/dev/null || echo 'not installed')"

echo "✅ All done! Run source ~/.bashrc or reopen your terminal"
BASH
# تشغيل السكريبت
chmod +x ~/setup-dev.sh
./setup-dev.sh

❓ أسئلة شائعة

س: ما الفرق بين .bashrc و.bash_profile؟ ج: \1

س: هل تبقى الأسماء المستعارة بعد إعادة التشغيل؟ ج: فقط لجلسة الطرفية الحالية (مؤقتة). لجعلها دائمة، يجب كتابة أوامر alias في ~/.bashrc.

س: كيف أجعل الأسماء المستعارة تعمل لكل المستخدمين؟ ج: اكتبها في الإعدادات العامة /etc/bash.bashrc أو /etc/profile.d/custom.sh (يتطلب صلاحيات جذر).

س: هل يمكن للمحث PS1 عرض فرع Git؟ ج: نعم. استخدم الدالة __git_ps1 (تتطلب bash-completion) أو أضف $(git branch 2>/dev/null | grep '*' | sed 's/* //') إلى PS1 الخاص بك.

س: كيف أستعيد بيئتي إذا أفسدتها؟ ج: إذا أُسيئ إعداد .bashrc، ابدأ bash نظيفًا بـbash --noprofile --norc ثم عدّله وأصلحه. أو انسخه احتياطيًا مسبقًا بـcp ~/.bashrc ~/.bashrc.backup.


📖 ملخص


📝 تمارين

  1. أساسي (صعوبة ⭐): أنشئ هيكل دلائل التطوير الشخصي (projects/scripts/learning على الأقل) وأعد 3 أسماء مستعارة مفيدة (مثل ll و.. وcls) في .bashrc
  2. متوسط (صعوبة ⭐⭐): خصّص PS1 لعرض اسم المستخدم والدليل الحالي وفرع Git، وثبّت بيئة تشغيل لغة تطوير (Python أو Node.js)
  3. متقدم (صعوبة ⭐⭐⭐): اكتب سكريبت ~/projects/scripts/info.sh يُخرج إصدار النظام والنواة والقرص والذاكرة، مع set -e لمعالجة الأخطاء ومخرجات منسّقة
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%